ORACLE-关于ORA-04021得解决办法(timeout occurred while waiting to lock object)
某个应用正在锁定该表或者包
表为
select b.SID, --SESSION标识,常用于连接其它列
b.SERIAL#, --如果某个SID又被其它的session使用的话则此数值自增加(当一个 SESSION结束,另一个SESSION开始并使用了同一个SID)
c.SQL_TEXT, --sql脚本
c.LAST_ACTIVE_TIME --最后一次运行时间
from v$locked_object a, v$session b, v$sqlarea c
where a.SESSION_ID = b.SID
and b.SQL_ADDRESS = c.ADDRESS
and c.sql_text like '%table_name%'
在此方法中,LAST_ACTIVE_TIME为查看最后一次运行时间
包为
select B.SID,b.USERNAME,b.MACHINE,,B.SERIAL# FROM V$ACCESS A, V$SESSION B WHERE A.SID=B.SID and a.OBJECT = '%PACKAGE_name%' and a.TYPE = 'PACKAGE'
找出这个session
然后 kill
alter system kill session 'sid,serial#'