1. 程式人生 > >查詢被鎖的物件及解決方法

查詢被鎖的物件及解決方法

一般情況下報ORA 00054時,就很有可能有物件被鎖住了,這個錯誤一般都是“資源正忙, 但指定以 NOWAIT 方式獲取資源, 或者超時失效”,其解決方法如下:

1、查詢哪些物件被鎖

select object_name,machine,s.sid,s.serial# 
from v$locked_object l,
dba_objects o ,
v$session s
where l.object_id = o.object_id and l.session_id=s.sid;

2、殺死程序

alter system kill session 'sid,serial#'; 

一般情況下這樣就解決了鎖物件問題,但有時可能還會產生ORA 00031錯誤“session marked for kill”

這說明被鎖的物件長時間沒有被釋放,需要用OS去殺程序

1、查找出鎖物件的程序ID

select spid, osuser, s.program 
from v$session s,v$process p
where s.paddr=p.addr and s.sid=sid(這裡的sid是上面查詢出來的)

2、找到程序後kill -9去殺掉