oracle表被鎖(delete或update一直處於執行狀態)的處理辦法。


 1 --首先查看有哪些鎖
 2 select /*+ rule */ s.username,
 3       decode(l.type,'TM','TABLE LOCK','TX','ROW LOCK',null) lock_level,
 4       o.owner,
 5       o.object_name,
 6       o.object_type,
 7       s.sid,s.serial#,
 8       s.terminal,
 9       s.machine,
10       s.program,
11       s.osuser
12 from v$session s,v$lock l,dba_objects o
13 where l.sid = s.sid
14 and l.id1 = o.object_id(+)
15 and s.username is not null
16  
17 --如果發生了鎖等待,看是誰鎖了表而引起誰的等待
18 --以下的語句可以查詢到誰鎖了表,而誰在等待。 如果有子節點,則表示有等待發生
19 select /*+ rule */ lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,
20        o.owner,
21        o.object_name,
22        o.object_type,
23        s.sid,
24        s.serial#
25 from v$locked_object l,dba_objects o,v$session s
26 where l.object_id=o.object_id
27 and l.session_id=s.sid
28 order by o.object_id,xidusn desc
29  
30  
31 --找到引起等待的session,殺掉該session: 
32 alter system kill session 'sid,serial#';

http://bbs.csdn.net/topics/370025735


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM