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 ...