在執行或編譯某個存儲過程時,出現鎖定超時(locked timeout)的錯誤,
咱們首先考慮 系統中有對應的引用對象 存在鎖定狀態
sql
如下步驟爲基本查詢鎖定信息的步驟:session
-
查詢當前系統中鎖定的對象 ide
select v.sid,v.serial#,o.object_name,o.object_type,l.locked_mode from v$locked_object l,v$session v,user_objects o where l.session_id = v.sid and l.object_id = o.object_id;
-
查詢當前系統中對應的鎖定對象的調用 code
select NAME, TYPE from user_dependencies where referenced_name = 'TMP_DEVICE'
- 查詢當前系統中正在執行的某個特定功能的會話信息
select v.sid,v.serial#,p.pid,p.spid,s.sql_text from v$session v,v$sql s,v$process p where v.sql_id = s.sql_id and v.paddr = p.addr and s.sql_text like '%p_stat%';
查詢出對應進程,若是不是死鎖,可等待對象進程執行完,若是時死鎖狀態 ,須要殺掉對應進程 對象
從第3步查詢的結果進行處理 進程
-- 殺掉進程 alter system kill session 'sid,serial#'; 或者 登陸後臺:kill -15 spid;