2009年1月22日木曜日

ORACLEのロック太郎

oracleのロック確認方法


select sid,serial#,status,login_time from v$session;


でActiveなsessionを確認するのね。
んでもって


select sid,lmode,ctime,block from V$lock:

で、対象のsid、ロックモードとかを確認する。

lmodeの状態はこんなかんじ

・0 -なし
・1 -Null (NULL )
・2 -行共有(SS )
・3 -行排他(SX )
・4 -共有(S )
・5 -共有/行排他(SSX )
・6 -排他(X ) 

んで、sessionを特定できたらkillするのだ!!


alter system kill session 'sid,serial#';


sessionをkillすると、v$sessionの対象sessionのstatusがkilledになるはず。
killedの状態は時間がたつと消えるのね。(2時間かな?)

EnterpriseManagerからやったほうが簡単だけどね。
対応はこれでOK。

ただ、たまにsessionをkillしてもOS側でプロセス握っている場合があるので
そしたらOS側のプロセスをkill -9で殺してあげましょー

万が一消えない場合は、abortしかないよ。

0 件のコメント: