蛇蝎美人未删减360网盘:Oracle查看死锁

来源:百度文库 编辑:九乡新闻网 时间:2024/04/30 20:39:53
查看有哪些表被锁住zR-K+T Q luM0 51Testing软件测试网4| { Ca @T$W 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_id51Testing软件测试网k,p-_'W t!G}E?Mv 51Testing软件测试网&]UD1` W-Yf x4z@R`0 51Testing软件测试网E!g h.|wG &c9O wU+p3W3WT6~0 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_time51Testing软件测试网%D g X}NN ru ]-`hBV\%QC0 51Testing软件测试网?t _-ki8}AtkK3@@\ 杀进程中的会话51Testing软件测试网(?\2|z,yP6Z9K9|!k alter system kill session 'sid,serial#';
e.g
alter system kill session '29,5497';51Testing软件测试网 V,v)A W#[ O-]I 51Testing软件测试网 e g6g.o `1M 51Testing软件测试网n#m*Y_*q9wR W  )WS*n&ms,kPN0 如果有ora-00031错误,则在后面加immediate;alter system kill session '29,5497' immediate;51Testing软件测试网h cY#A3I!J 如何杀死oracle 死锁进程V1w7pa*t5o0 1.查哪个过程被锁:.G#bZ2?EW1c3U0   查V$DB_OBJECT_CACHE视图:H y,Z`|3R.V0   SELECT * FROM V$DB_OBJECT_CACHE WHERE ōWNER='过程的所属用户' AND CLOCKS!='0';k gA i._Z0   2. 查是哪一个SID,通过SID可知道是哪个SESSION:W0}/u#hT@x8R _0   查V$ACCESS视图:&q o,kC u;]0   SELECT * FROM V$ACCESS WHERE ōWNER='过程的所属用户' AND NAME='刚才查到的过程名';Xjy2m6[4kX:]*}%|Y-^0   3. 查出SID和SERIAL#:)KZzYf:p FX0   查V$SESSION视图:51Testing软件测试网^!S ^\A|9Q-R6@ p   SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='刚才查到的SID';eJc N/rx C s0   查V$PROCESS视图:[;s&R1Ok0   SELECT SPID FROM V$PROCESS WHERE ADDR='刚才查到的PADDR';51Testing软件测试网G!} n G [!^`   4. 杀进程:5@Ny9ga{O+OD0   (1)先杀ORACLE进程:_ K%G"g6_*^TXhs0   ALTER SYSTEM KILL SESSION '查出的SID,查出的SERIAL#';8t"U L8fD;QGP P0   (2)再杀操作系统 进程:.Wa4T&u M eP0   KILL -9 刚才查出的SPID或ORAKILL 刚才查出的SID 刚才查出的SPID。51Testing软件测试网s$| vj]0e/T,iww+[   Oracle的死锁51Testing软件测试网A:t'v0S(N(u+_R&]$_i   查询数据库 死锁:51Testing软件测试网m3U8X hX,o select t2.username||'  '||t2.sid||' 
'||t2.serial#||'  '||t2.logon_time||' 
'||t3.sql_text
from v$locked_object t1,v$session t2,v$sqltext t3
where t1.session_id=t2.sid
and t2.sql_address=t3.address
order by t2.logon_time;2e&[%m JPIm|0 %Kp-`3x7w%\(J0 K-pm3VR,p#R0 51Testing软件测试网2~8] B3j(QX {3_ "L9Xn$U-Y%`)L X0 ^CG IP9vn({9k0 -q8t4euyyC9|1u0   查询出来的结果就是有死锁的session了,下面就是杀掉,拿到上面查询出来的SID和SERIAL#,填入到下面的语句中:51Testing软件测试网8{^*`8X"_dg   alter system kill session 'sid,serial#';51Testing软件测试网S ^&\?A&I V~i3L5k   一般情况可以解决数据库存在的死锁了,或通过session id 查到对应的操作系统进程,在Unix中杀掉操作系统的进程。JBg5e*N h0 SELECT a.username,c.spid AS os_process_id,c.pid
AS oracle_process_id FROM v$session a,v$process c
WHERE c.addr=a.paddr and a.sid= and a.serial#= ;51Testing软件测试网 P8Q1S@VMt 51Testing软件测试网v'{;j*K+KN'f 0un8iCS0   然后采用kill (unix) 或 orakill(windows )。
 在Unix中:51Testing软件测试网:Q:Ks7x z+H w 51Testing软件测试网-sd5J4U,k ] ps -ef|grep os_process_id
kill -9 os_process_id
ps -ef|grep os_process_id51Testing软件测试网Y m$uR? r 51Testing软件测试网5M7VfJ){_:`\ 51Testing软件测试网 S AigwI#WC)c   经常在Oracle的使用过程中碰到这个问题,所以也总结了一点解决方法。w,WV+\F C mi0   1)查找死锁的进程:51Testing软件测试网;]@6Z,`c'KO sqlplus "/as sysdba"  (sys/change_on_install)
SELECT s.username,l.OBJECT_ID,l.SESSION_ID,s.SERIAL#,
l.ORACLE_USERNAME,l.OS_USER_NAME,l.PROCESS
FROM V$LOCKED_OBJECT l,V$SESSION S WHERE l.SESSION_ID=S.SID;51Testing软件测试网W#S:l2X i 51Testing软件测试网[8X4Fx @ _} 51Testing软件测试网$Es bx|ym/DG 51Testing软件测试网#mmQ7O&k ~#h   2)kill掉这个死锁的进程:51Testing软件测试网3`1[G,_!Y-JUU   alter system kill session ‘sid,serial#’; (其中sid=l.session_id)51Testing软件测试网;|`%Tj_Gq   3)如果还不能解决:51Testing软件测试网NM B3R5ql:x select pro.spid from v$session ses,
v$process pro where ses.sid=XX and
ses.paddr=pro.addr;9U,i\Lv*\U!E0 51Testing软件测试网TL$pF(x'I#wQ 51Testing软件测试网Fh4h&IOrU   其中sid用死锁的sid替换:mz;b-O6]cJ0 exit
ps -ef|grep spid51Testing软件测试网XIC-f[ _ 7{z(k@5x$W3u0   其中spid是这个进程的进程号,kill掉这个Oracle进程。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaoyyhn/archive/2009/06/20/4281575.aspx