[英]How do I find what is causing ORA-00054?
在過去的一段時間里,我注意到在嘗試發出SELECT ... FOR UPDATE NOWAIT
,在db的大量並發更新期間,我們收到ORA-00054
錯誤。 這是我們的開發系統,我們真的沒有任何其他用戶,或者至少這是我們所相信的。
我們已經瀏覽了我們的應用程序的日志,似乎一切都井然有序; 沒有線程試圖更新同一行。
如何配置Oracle數據庫以生成一個日志,讓我知道發生此錯誤時持有鎖的用戶ID?
從這里: ORA-00054:資源忙,並通過NOWAIT指定獲取
您還可以查找sql,用戶名,機器,端口信息,並進入保存連接的實際進程
SELECT O.OBJECT_NAME, S.SID, S.SERIAL#, P.SPID, S.PROGRAM,S.USERNAME,
S.MACHINE,S.PORT , S.LOGON_TIME,SQ.SQL_FULLTEXT
FROM V$LOCKED_OBJECT L, DBA_OBJECTS O, V$SESSION S,
V$PROCESS P, V$SQL SQ
WHERE L.OBJECT_ID = O.OBJECT_ID
AND L.SESSION_ID = S.SID AND S.PADDR = P.ADDR
AND S.SQL_ADDRESS = SQ.ADDRESS;
刪除NOWAIT,並監視DBA_BLOCKERS / DBA_WAITERS。
請使用
select * from v$locked_object
獲取鎖定信息
由於它是開發環境,您可以嘗試以下鏈接中提供的方法
https://forums.oracle.com/forums/thread.jspa?threadID=324530
在下面的鏈接中使用v $ lock提供了更全面的方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.