Oracle 查詢死鎖,查詢步驟及處理方法

在執行或編譯某個存儲過程時,出現鎖定超時(locked timeout)的錯誤,
咱們首先考慮 系統中有對應的引用對象 存在鎖定狀態
sql


如下步驟爲基本查詢鎖定信息的步驟:session

  1. 查詢當前系統中鎖定的對象 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;
  2. 查詢當前系統中對應的鎖定對象的調用 code

    select NAME, TYPE 
    from user_dependencies  
    where referenced_name = 'TMP_DEVICE'
  3. 查詢當前系統中正在執行的某個特定功能的會話信息
    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;
相關文章
相關標籤/搜索