檢視有哪些表被鎖住
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 owner='過程的所屬使用者' and clocks!='0';
2. 查是哪乙個sid,通過sid可知道是哪個session:
查v$access檢視:
select * from v$access where owner='過程的所屬使用者' 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)再殺作業系統程序:
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#= ;
然後採用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
ps -ef|grep spid
其中spid是這個程序的程序號,kill掉這個oracle程序。
檢視死鎖p lockinfo
set quoted identifier on go set ansi nulls on go exec proc p lockinfo 0,0 alter proc p lockinfo kill lock spid bit 1,是否殺掉死鎖的程序,1 殺掉,0 僅顯示 show spid if...
GDB 檢視死鎖
死鎖 一種情形,此時執行程式中兩個或多個執行緒發生永久堵塞 等待 每個執行緒都在等待被 其他執行緒占用並堵塞了的資源。例如,如果執行緒a鎖住了記錄1並等待記錄2,而執行緒b鎖住了記錄2並等待記錄1,這樣兩個執行緒就發生了死鎖現象。gdb除錯死鎖的方法 gdb attach pid 找到 lll lo...
SQL Server 檢視死鎖
use master goselect top 100 session id request id start time as 開始時間 status as 狀態 command as 命令 dest.text as sql語句 db name database id as 資料庫名 blockin...