Oracle檢視鎖表和解鎖

2022-01-19 14:05:21 字數 1448 閱讀 7316

--注意許可權問題

1.檢視是否有被鎖的表:

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

2.檢視是哪個程序鎖的

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

3.殺掉程序

alter system kill session 'sid,serial#';

首先你要知道表鎖住了是不是正常鎖?因為任何dml語句都會對錶加鎖。

你要先查一下是那個會話那個sql鎖住了表,有可能這是正常業務需求,不建議隨便kill session,如果這個鎖表是正常業務你把session kill掉了會影響業務的。

建議先查原因再做決定。

(1)鎖表查詢的**有以下的形式:

select count(*) from v$locked_object;

select * from v$locked_object;

(2)檢視哪個表被鎖

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;

(3)檢視是哪個session引起的

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;

(4)檢視是哪個sql引起的

select b.username,b.sid,b.serial#,c.* from v$locked_object a,v$session b,v$sql c where a.session_id = b.sid

and b.sql_id = c.sql_id and c.sql_id = ''

order by b.logon_time;

(5)殺掉對應程序

執行命令:alter system kill session'1025,41';

其中1025為sid,41為serial#.

(6) 顯示使用者會話id不存在 :  

我遇到的情況是,其實已經執行了kill程序命令,即已經執行了第(5)條,

但是要等個把小時才生效,在短時間內還是鎖表狀態,並且報的提示資訊是 會話id不存在,

可過一段時間再試,表已經解鎖了。

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

oracle鎖表檢視被鎖的表和解鎖

以下幾個為相關表 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 sele...

Oracle鎖表和解鎖

宣告 本文 oracle的鎖表與解鎖select rule s.username,decode l.type,tm table lock tx row lock null lock level,o.owner,o.object name,o.object type,s.sid,s.serial s....