Oracle 鎖表 解鎖

2021-09-09 05:03:27 字數 1597 閱讀 5107

--以下幾個為相關表

select * from v$lock;

select * from v$sqlarea;

select * from v$session;

select * from v$process ;

select * from v$locked_object;

select * from all_objects;

select * from v$session_wait;

--檢視被鎖的表 

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;

--檢視連線的程序 

select sid, serial#, username, osuser from v$session;

--3.查出鎖定表的sid, serial#,os_user_name, machine_name, terminal,鎖的type,mode

select s.sid, s.serial#, s.username, s.schemaname, s.osuser, s.process, s.machine,

s.terminal, s.logon_time, l.type

from v$session s, v$lock l

where s.sid = l.sid

and s.username is not null

order by sid;

--3(1)檢視鎖定表 select * from v$session t1, v$locked_object t2 where t1.sid = t2.session_id; 

這個語句將查詢到資料庫中所有的dml語句產生的鎖,還可以發現,

任何dml語句其實產生了兩個鎖,乙個是表鎖,乙個是行鎖。

--殺掉程序 sid,serial#

alter system kill session'210,11562';

-- 4.批量解鎖

declare cursor mycur is   

select b.sid,b.serial#   

from v$locked_object a,v$session b   

where a.session_id = b.sid group by b.sid,b.serial#;   

begin   

for cur in mycur   

loop     

execute immediate ( 'alter system  kill session  '''||cur.sid || ','|| cur.serial# ||''' ');   

end loop;   

end;

Oracle 鎖表 解鎖

select l.session id sid,s.serial l.locked mode,l.oracle username,l.os user name,s.machine,s.terminal,o.object name,s.logon time from v locked object l...

oracle 檢視鎖表,解鎖

racle 鎖表查詢 和 解鎖 2009年08月25日 星期二 08 19 p.m.最近遇到這樣乙個問題,操作乙個表,發現被人鎖定了,於是查詢誰鎖定的表,發現多人鎖定,安全起見,不能全部kill,於是用一下語句判定,誰鎖定,誰等待。sql 查詢誰鎖定,誰等待 select rule lpad dec...

oracle鎖表 解鎖方法

寫在前面 沒啥好說的 古太郎 csdn 一 原理 oracle鎖表涉及以下2個檢視和1張表,找出來殺死即可。v locked object v session dba objects 二 操作 1 檢視被鎖表的語句 select b.owner,b.object name,c.sid,c.seria...