oracle死程序查詢與刪除方法

2021-09-06 01:39:40 字數 1116 閱讀 8123

2023年11月3日

到了下午,一編譯我的oracle包就出現卡死狀態,過了好久終於在彈出乙個錯誤「ora-04021」錯誤,經過查詢原來是我的job在執行(job執行的包正式我編譯的包怪不得編譯不了)。因此查詢原因時可以通過以下幾個表來檢視具體的程序死鎖:

v$lock;--檢視鎖的狀態

v$session;--檢視程序

因此我就將此job停止,但是停止後檢視select * from dba_jobs_running,發現該job仍在,因此將該job手動刪除,但是仍然沒用,因此採用以下方法進行殺程序:

首先找到該進行的session_id: select xidusn, object_id, session_id, locked_mode from v$locked_object; 131

然後找到該程序的serial# :select username,sid,serial# from v$session where sid=131; 372

最後殺掉該程序:alter system kill session '131,372';

發現該job已經成功刪除

直接查出被鎖物件,id,系統程序號sql:

select object_name, s.sid, s.serial#, p.spid

from v$locked_object l, dba_objects o, v$session s, v$process p

where l.object_id = o.object_id

and l.session_id = s.sid

and s.paddr = p.addr;

注:或者直接在作業系統上執行 kill -9 spid

spid即為如上sql的p.spid(v$process表的spid)

如果是xp系統,則刪除方式為orakill orasid spid(orasid即資料庫的sid如預設安裝的就是orcl)

如上sql無法找到被鎖的物件,可以試著通過該sql進行查詢

select  * from dba_ddl_locks  where name='object_name'

如果oracle是集群環境,很可能plsql連線後查詢找不到被鎖的物件,可以直接到資料u伺服器上執行語句進行查詢

oracle 殺死鎖死的程序

方法一 1.查被鎖的物件 select from v db object cache where owner 過程的所屬使用者 and locks 0 2.查是哪乙個sid,通過sid可知道是哪個session.select from v access where owner 過程的所屬使用者 an...

Oracle資料庫中,表的鎖死查詢與解鎖。

查詢那些表被鎖住 select a.owner,object所屬使用者 a.object name,object名稱 表名 b.xidusn,b.xidslot,b.xidsqn,b.session id,鎖表使用者的session b.oracle username,鎖表使用者的oracle使用者...

Oracle查詢 建立 刪除DBLink

查詢dblink資訊 select from dba db links select owner,object name from dba objects where object type database link select from all db links oracle建立dblink報...