오라클 디비를 사용하다 보면 분명 프로그램 이상이겠지..

꼭 데이터베이스에 lock이 걸려 서버가 다운되거나... 미친듯이 오래 걸린다던가..

암튼 이만저만 짜증이 난다.. 중요한건.. 토드 같은 오라클 툴이 없으면.. 이거 LOCK걸렸을 때 쿼리 기억 안나면 미친다..

그래서 정리 해 봤다.. 힌트를 줘서 사용하니 조금 빠르군..

사용하는 계정으로 오라클을 로그인 하여 아래의 쿼리를 실행한다.


SELECT /*+ ordered */
        a.sid SID,
        to_char(b.serial#) SEQ,
        id1 ID1,
        to_char(b.audsid) AUD,
        b.username Uname,
        b.osuser OsUser,
        c.sql_text SQLSTMT
FROM v$lock a ,
        v$session b,
        v$sql c
WHERE   a.type = 'TM'
AND       a.sid = b.sid
AND       c.hash_value (+) = b.sql_hash_value;

제일 처음 나오는 a.sid는 Session ID이고  두번째의 b.serial# 는 Serial번호이다.
이 둘을 이용하여 해당작업을 강제 종료시킬 수 있다.

Alter System Kill session 'Sid,Serial#';
위에서 나온 첫째 필드값 -----^    ^----------두번째 필드값

물론 앞 두개의 컬럼 이외에 나머지는 그냥 정보로써 사용하면 된다...

kill하고 나면 사용하고 있는 데이타가 제대로 rollback이 되었는지 확인 해주는 센스....



WRITTEN BY
한량이

,