ORA-00054: resource busy and acquire with NOWAIT specified

dmcatding發表於2019-08-02

作業系統:AIX 6.1

資料庫版本:11.2.0.4.170117

原因:OGG目的端相關表欄位新增完畢,源端新增報錯ORA-00054: resource busy and acquire with NOWAIT specified

 因申請變更時間將至 所以反饋到我處

驗證現象:

一、檢查資料是否有鎖


檢查結果為空,沒有死鎖物件


二、檢查是否有物件被鎖且未提交

單例項:


RAC:


二、根據sid檢視具體的sql語句,如果sql不重要,可以kill

select sql_text

  from v$session a, v$sqltext_with_newlines b

 where DECODE(a.sql_hash_value, 0, prev_hash_value, sql_hash_value) =b.hash_value

   and a.sid = &sid

 order by piece;



三、kill該事務

alter system kill session 'SID,SERIAL#';


結果有兩個會話,因為時間關係,未檢查是何SQL導致,直接KILL 

SQL> alter system kill session '952,57243';

System altered.


SQL> alter system kill session '6301,8029';

System altered.


####ORA-00031: session marked for kill

一些ORACLE中的程式被殺掉後,狀態被置為"killed",但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟資料庫。

現在提供一種方法如下:

提供如下SQL 可以 OS級別KILL

select '!kill -9 '||p.spid||'' from v$process p,v$session s where p.addr=s.paddr  and sid=&sid;


四、這樣就可以執行其他的事務sql語句了

再次執行新增欄位:

SQL>  alter table newbcexplore.item add MIN_ORDER_QTY FLOAT;

Table altered.

完畢!


總結:

當某個資料庫使用者在資料庫中插入、更新、刪除一個表的資料,或者增加一個表的主鍵時或者表的索引時,常常會出現ora-00054:resource busy and acquire with nowait specified這樣的錯誤。

主要是因為有事務正在執行(或者事務已經被鎖),所有導致執行不成功。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30327022/viewspace-2652580/,如需轉載,請註明出處,否則將追究法律責任。

相關文章