查看是否锁表

--查看锁表语句

select sess.sid,     sess.serial#,     lo.oracle_username,     lo.os_user_name,     ao.object_name,     lo.locked_mode     from v$locked_object lo,     dba_objects ao,     v$session sess where ao.object_id = lo.object_id and lo.session_id = sess.sid;

--查看被锁session

select * from v$session t1, v$locked_object t2 where t1.sid = t2.SESSION_ID;

办法一:

--如有記錄則表示有lock,記錄下SID和serial# ,將記錄的ID替換下面的738,1429,即可解除LOCK

alter system kill session '4457,38428';

办法二:

oracle_11g才适用的方法

alter session set ddl_lock_timeout = 600;  

or

alter system set ddl_lock_timeout = 600;  

这种方法是设置系统或会话的锁定时间。这个办法实际上也不是治本的方法,但是可以减少人工操作罢了,要想治本还是要求我们的开发人员和数据库使用人员在操作数据库的时候记得要commit。

原文地址:https://www.cnblogs.com/emilyyoucan/p/8397645.html