f OracleDB truncate 表格出現ORA-00054: 資源正被使用中 ~ 迪貝之家

Pages

OracleDB truncate 表格出現ORA-00054: 資源正被使用中

今天接到這個case, 去看ash、 ADDM等報表,其實找不太到問題的所在,到最後沒招了,我只好下oradebug指令進行hang analysis

首先我開啟一個session, 先調整ddl_lock_timeout 的值,讓truncate 指令能夠hang住,不會直接拋出ORA-00054

SQL> ALTER SESSION SET ddl_lock_timeout=3000;

Session altered.

SQL> truncate table aaa.bbbb;

然後另開一個sqlplus session,下oradebug指令


oradebug









再用truncate字串查看檔案內容
ORA-00054

















從ash報表查看,就是看到enq:TM - contention等待事件
但就是找不到lock chain 的關連session 的資料
ORA-00054
current sql 沒東西,對照v$session裡頭的status,是inactive,難怪ash報表找不到源頭, 下指令kill session還沒辦法釋放掉,就在作業系統裡下kill -9 把process砍掉,等了大概有1~2分鐘,才恢復正常

大概7年前我駐點在目前的公司 ,也是碰到同樣的狀況。清晨三點接到AP Leader的電話,搞了老半天,找不到源頭,AP急得跳腳,說是很重要的業務,那時就只能開call severity 1,因為只有這個等級才有24小時技術支援,跟老外溝通怎麼處理該case,資料庫是8i,談到最後就是要我做systemdump收完資料傳給他做分析,最後找到源頭也是一個inactive 的session,砍掉該session後解決,那時候就覺得,原廠果然很神。
這麼多年過去了,總不能沒長進吧!想說自己解決看看吧~還好……真矇出來了,不然就漏氣了。