簡體   English   中英

我怎樣才能找到導致ORA-00054的原因?

[英]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提供了更全面的方法

http://www.orafaq.com/node/854

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM