oracle 程序死鎖

2021-06-09 14:52:51 字數 2664 閱讀 4628

oracle 程序死鎖

select b.owner,b.object_name,a.session_id,a.locked_mode

from v$locked_object a,dba_objects b

where b.object_id = a.object_id

select b.username,b.sid,b.serial#,logon_time

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time

殺程序中的會話alter system kill session 'sid,serial#';

e.galter system kill session '29,5497';

如果有ora-00031錯誤,則在後面加immediate;alter system kill session '29,5497' immediate;

如何殺死oracle死鎖程序

1.查哪個過程被鎖:

查v$db_object_cache檢視:

select * from v$db_object_cache where ōwner='過程的所屬使用者' and clocks!='0';

2. 查是哪乙個sid,通過sid可知道是哪個session:

查v$access檢視:

&q o,k c u;]0

select * from v$access where ōwner='過程的所屬使用者' and name='剛才查到的過程名';

3. 查出sid和serial#:

查v$session檢視:

select sid,serial#,paddr from v$session where sid='剛才查到的sid';

查v$process檢視:

select spid from v$process where addr='剛才查到的paddr';

4. 殺程序:

(1)先殺oracle程序:

alter system kill session '查出的sid,查出的serial#';

(2)再殺作業系統

程序:

.w a4t&u m e p0

kill -9 剛才查出的spid或orakill 剛才查出的sid 剛才查出的spid。

oracle的死鎖

查詢資料庫

死鎖:

select t2.username||'  '||t2.sid||' 

'||t2.serial#||'  '||t2.logon_time||' 

'||t3.sql_text

from v$locked_object t1,v$session t2,v$sqltext t3

where t1.session_id=t2.sid

and t2.sql_address=t3.address

order by t2.logon_time;

查詢出來的結果就是有死鎖的session了,下面就是殺掉,拿到上面查詢出來的sid和serial#,填入到下面的語句中:

alter system kill session 'sid,serial#';

一般情況可以解決資料庫存在的死鎖了,或通過session id 查到對應的作業系統程序,在unix中殺掉作業系統的程序。

select a.username,c.spid as os_process_id,c.pid

as oracle_process_id from v$session a,v$process c

where c.addr=a.paddr and a.sid= and a.serial#= ;

0u n8i c s0

然後採用kill (unix) 或 orakill(windows )。

在unix中:

ps -ef|grep os_process_id

kill -9 os_process_id

ps -ef|grep os_process_id

經常在oracle的使用過程中碰到這個問題,所以也總結了一點解決方法。

1)查詢死鎖的程序:

sqlplus "/as sysdba"  (sys/change_on_install)

select s.username,l.object_id,l.session_id,s.serial#,

l.oracle_username,l.os_user_name,l.process

from v$locked_object l,v$session s where l.session_id=s.sid;

2)kill掉這個死鎖的程序:

alter system kill session 『sid,serial#』; (其中sid=l.session_id)

3)如果還不能解決:

select pro.spid from v$session ses,

v$process pro where ses.sid=xx and

ses.paddr=pro.addr;

其中sid用死鎖的sid替換:

exit

其中spid是這個程序的程序號,kill掉這個oracle程序

殺死Oracle死鎖程序

很多人應該都遇到多oracle程序死鎖的情況,下面是兩個簡單的sql,來殺死死鎖程序 sep27,2008 eleven.xu select locked process select s.username,l.object id,o.name,l.session id,s.serial l.ora...

關閉Oracle死鎖程序

關閉oracle死鎖程序的具體步驟 查哪個過程被鎖 查v db object cache檢視 select from v db object cache where owner 過程的所屬使用者 and clocks 0 2.查是哪乙個sid,通過sid可知道是哪個session 查v access...

oracle死鎖殺程序

oracle 表死鎖殺程序 1.下面的語句用來查詢哪些物件被鎖 select object name,machine,s.sid,s.serial from v locked object l,dba objects o v session s where l.object id o.object ...