--注意許可權問題
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語句都會對錶加鎖。(6) 顯示使用者會話id不存在 :你要先查一下是那個會話那個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#.
我遇到的情況是,其實已經執行了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....