본문 바로가기
IT/Database

[Oracle / Tibero] Lock 걸린 테이블 확인

by 성준하이 2023. 11. 26.
반응형

불특정한 다양한 이유로 Database는 Lock이 걸릴수 있고,

만약 그 Lock 이 DeadLock일 경우에는 멈춰버리는 상황이 생겨

최악으로는 프로세스를 내렸다가 다시 실행해야하는 상황이 생길수도 있다.

 

다시 실행하면 그만이 아닌 어떤 쿼리에서 어떤 이유로 , 왜 락이 걸렸는지 등등 확인해봐야한다.

 

아래 쿼리를 참고 하면 된다.

락 걸린 테이블 확인 select
      *
from 
      v$locked_object vo
    , dba_objects do
 where vo.object_id = do.object_id;
장기실행 또는 락걸린 SQL 확인 select 
     distinct vo.session_id
    ,vss.serial#
    ,do.object_name
    ,vss.machine
    ,vss.terminal
    ,vss.program
    ,vsql.address
    ,vsql.piece
    ,vsql.sql_text
from 
     v$locked_object vo
    ,v$session vss
    ,v$sqltext vsql
    ,dba_objects do
where 
        1=1
    and vo.session_id   = vss.sid
    and vo.object_id    = do.object_id
    and vss.sql_address = vsql.address
order by vsql.address, vsql.piece;

 

이렇게 확인이 가능하고 해결하려면 아래와 같다.

 

테이블 세션 kill alter system kill session 'sid, serial#';
alter system kill session '1954, 63611';
반응형

댓글