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#'

猜你喜欢

转载自beliveada.iteye.com/blog/1319617