oracle 資料表死鎖解決方法 oracle
查詢死鎖資訊的語句:
檢視複製到剪貼簿列印
select a.owner,
a.object_name,
b.xidusn,
b.xidslot,
b.xidsqn,
b.session_id,
b.oracle_username,
b.os_user_name,
b.process,
b.locked_mode,
c.machine,
c.status,
c.server,
c.sid,
c.serial#,
c.program
from all_objects a, v$locked_object b, sys.gv_$session c
where (a.object_id = b.object_id)
and (b.process = c.process)
order by 1, 2
---------------------------------------------
第一步:檢視是否有死鎖存在,查出有資料則代表有死鎖:
檢視複製到剪貼簿列印
select p.spid,c.object_name,b.session_id,b.oracle_username,b.os_user_name from v$process p,v$session a,v$locked_object b,all_objects c
where p.addr=a.paddr
and a.process=b.process
and c.object_id=b.object_id
第二步:查出死鎖session的精確資訊【sid 為前面語句的session_id】
檢視複製到剪貼簿列印
select sid, serial#, username, osuser from v$session where sid=
'第一步查詢出來的session_id'
;
第三步:刪除死鎖【第乙個引數為sid,第二個為serial#】
檢視複製到剪貼簿列印
alter system kill session
'sid,serial#'
;
如果還不能解決,
檢視複製到剪貼簿列印
select pro.spid from v$session ses,v$process pro where ses.sid=xx and ses.paddr=pro.addr;
其中sid用死鎖的sid替換。
檢視複製到剪貼簿列印
1.exit
2.ps -ef|grep spid
其中spid是這個程序的程序號,kill掉這個oracle程序。
Oracle資料庫死鎖解決方法
死鎖是資料庫經常發生的問題,資料庫一般不會無緣無故產生死鎖,死鎖通常都是由於我們應用程式的設計本身造成的。產生死鎖時,如何解決呢,下面是常規的解決辦法 1 執行下面sql,先檢視哪些表被鎖住了 select b.owner,b.object name,a.session id,a.locked mo...
oracle資料庫死鎖解決方法
在做專案中,在程式完全正確的情況下,出現了當執行sql語句的時候停止工作的現象,開始是懷疑出現了死鎖,當利用sql查詢時發現自己是對的,死鎖通常都是我們應用程式設計不合理造成的,如何處理資料庫中的死鎖呢?1.先看一下資料庫中那些表被鎖住了。select b.owner,b.object name,a...
死鎖解決方法
死鎖是程序併發執行過程中可能出現的現象,哲學家就餐問題是描述死鎖的經典例子。為了防止死鎖,可以採用資源預分配法或者資源按序分配法。資源預分配法是指程序在執行前一次性地向系統申請它所需要的全部資源,如果系統當前不能夠滿足程序的全部資源請求,則不分配資源,此程序暫不投入執行,如果系統當前能夠滿足程序的全...