【oracle 殺死繁忙程式 ORA-00054】實驗

Yichen16發表於2022-08-16

資料庫實際操作過程中,有時候會遇到程式一致處於繁忙階段,命令列中無法終端其程式的執行,這個時候我們就想是否可以找到具體程式及其控制程式碼,將其殺死,從而使系統資源得到釋放。

下面我們來做個試驗:

一、 實驗環境

Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production

Version 19.3.0.0.0

二、 檢視現象及報錯

多一個表進行操作,導致出現表鎖的情況,報錯如下

SQL> drop table it purge;

drop table it purge*

ERROR at line 1:

ORA-00054: 資源正忙 , 但指定以 NOWAIT 方式獲取資源 , 或者超時失效

從現場的症狀,我們做刪除,修改表,處於等待狀態,無法操作。

三、 處理問題

1、 檢視是否有被鎖的物件;

select * from v$locked_object;

2、 得到被鎖物件的 session_id

select session_id from v$locked_object;

3、 透過 session_id去獲得 v$sessionsidserial#

SELECT sid, serial#, username, osuser FROM v$session where sid = '1147';

SELECT sid, serial#, username, osuser FROM v$session where sid = '1705';

   4、 殺死鎖表程式。

ALTER SYSTEM KILL SESSION '1147,13';

ALTER SYSTEM KILL SESSION '1705,21';

   5、 刪除表 scott.it資源繁忙情況解決。


總結:透過以上殺死僵死程式過程中,我們首先得找出具體的鎖程式,這方便我們在後期最佳化過程中語句執行慢,給自己找了一點思路。

 

Yicheng16
22.08.16 

-- The End --   

 


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

相關文章