반응형
불특정한 다양한 이유로 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'; |
반응형
'IT > Database' 카테고리의 다른 글
[Oracle] 세미 조인(Semi Join), 안티 조인(Anti Join) (24) | 2023.11.29 |
---|---|
[MySQL] ANY, ALL 함수 (34) | 2023.11.27 |
[Oracle] 인덱스 힌트/ 옵티마이저 힌트 사용방법 (주석, 튜닝) (30) | 2023.11.25 |
INDEX SCAN종류 (23) | 2023.11.24 |
INNER JOIN, NATURAL JOIN (40) | 2023.11.23 |
댓글