解決表死鎖

2021-06-14 18:38:07 字數 1317 閱讀 3439

--檢視被鎖的物件

select * from v$locked_object;

--檢視被鎖物件

select object_name as 物件名稱, s.sid, s.serial#, p.spid as 系統程序號

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;

select /*+ rule */

ls.osuser   os_user_name,

ls.username user_name, 

decode(ls.type,

'rw',

'row wait enquire lock',

'tm',

'dml enquire lock',

'tx',

'transaction enquire lock',

'ul',

'user supplied lock') lock_type, 

o.object_name object,

decode(ls.lmode,

1,null,

2,'row share',

3,'row exclusive',

4,'share',

5,'share row exclusive',

6,'exclusive',

null) lock_mode,

o.owner,

ls.sid,

ls.serial# serial_num,

ls.id1,

ls.id2

from sys.dba_objects o,

(select s.osuser,

s.username,

l.type,

l.lmode,

s.sid,

s.serial#,

l.id1,

l.id2

from v$session s,

v$lock l

where s.sid = l.sid) ls

where o.object_id = ls.id1

and o.owner<> 'sys'

order by o.owner, o.object_name;

--處理

alter system kill session '48,49704' immediate;

死鎖與解決死鎖

要是以後寫資料庫的產品,不是寫sql語句,那裡面涉及到的鎖就跟多了。故事裡有五個哲學家 這些哲學家很窮,只買得起五根筷子。他們坐成一圈,兩個人的中間放一根筷子。哲學家吃飯的時候必須同時得到左手邊和右手邊的筷子。如果他身邊的任何一位正在使用筷子,那他只有等著。假設哲學家的編號是a b c d e,筷子...

死鎖及死鎖的解決

如果一組程序中的每乙個程序都在等待僅由該組程序中的其它程序才能引發的事件,那麼該組程序是死鎖的,1 競爭不可搶占性資源。當系統把某資源分配給該程序後,就不能將它強行收回,只能在程序用完後自行釋放。2 競爭可消耗資源。當系統中供多個程序共享的資源如印表機,公用佇列等,其數目不足以滿足諸程序的需要時,會...

SqlServer表死鎖的解決方法

前些天寫乙個儲存過程,儲存過程中使用了事務,後來我把一些 注釋掉來進行除錯找錯,突然發現一張表被鎖住了,原來是建立事務的 忘記注釋掉。本文表鎖住了的解決方法。其實不光是上面描述的情況會鎖住表,還有很多種場景會使表放生死鎖,解鎖其實很簡單,下面用乙個示例來講解 1 首先建立乙個測試用的表 create...