오라클 락 걸렸을 때 유용하게 사용할 쿼리들입니다.
* 락걸린 테이블 확인
1 2 3 | SELECT DO.OBJECT_NAME, DO.OWNER, DO.OBJECT_TYPE, DO.OWNER, VO.XIDUSN, VO.SESSION_ID, VO.LOCKED_MODE FROM V$LOCKED_OBJECT VO, DBA_OBJECTS DO WHERE VO.OBJECT_ID = DO.OBJECT_ID | cs |
* 해당 테이블에 LOCK 이 걸렸는지 확인
1 2 3 4 | SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE='TM' AND C.OBJECT_NAME IN ('T_SKUMA') | cs |
* 락발생 사용자와 SQL, OBJECT 조회
1 2 3 4 5 6 | SELECT DISTINCT X.SESSION_ID, A.SERIAL#, D.OBJECT_NAME, A.MACHINE, A.TERMINAL, A.PROGRAM, B.ADDRESS, B.PIECE, B.SQL_TEXT FROM V$LOCKED_OBJECT X, V$SESSION A, V$SQLTEXT B, DBA_OBJECTS D WHERE X.SESSION_ID = A.SID AND X.OBJECT_ID = D.OBJECT_ID AND A.SQL_ADDRESS = B.ADDRESS ORDER BY B.ADDRESS, B.PIECE | cs |
* 현재 접속자의 SQL 분석
1 2 3 4 5 6 | SELECT DISTINCT A.SID, A.SERIAL#, A.MACHINE, A.TERMINAL, A.PROGRAM, B.ADDRESS, B.PIECE, B.SQL_TEXT FROM V$SESSION A, V$SQLTEXT B WHERE A.SQL_ADDRESS = B.ADDRESS ORDER BY A.SID, A.SERIAL#, B.ADDRESS, B.PIECE | cs |
* 락 세션 죽이기
1 2 3 4 5 6 | SELECT A.SID, A.SERIAL# FROM V$SESSION A, V$LOCK B, DBA_OBJECTS C WHERE A.SID = B.SID AND B.ID1 = C.OBJECT_ID AND B.TYPE = 'TM' AND C.OBJECT_NAME = 'TB_CO_GENO' | cs |
SID SERIAL#
--- -------
5 1
6 1
결과값이 위와 같은 경우, 아래와 같이 kill한다.
SQL> alter system kill session '5, 1';
SQL> alter system kill session '6, 1';
* 락 세션 죽이는 sql 문
1 2 3 4 5 | SELECT DISTINCT X.SESSION_ID, A.SERIAL#, D.OBJECT_NAME, A.MACHINE, A.TERMINAL, A.PROGRAM, A.LOGON_TIME, 'ALTER SYSTEM KILL SESSION'''||A.SID||', '||A.SERIAL#||''';' FROM GV$LOCKED_OBJECT X, GV$SESSION A, DBA_OBJECTS D WHERE X.SESSION_ID = A.SID AND X.OBJECT_ID = D.OBJECT_ID ORDER BY LOGON_TIME | cs |
'프로그래밍 언어 > 쿼리문 + Oracle + MySQL' 카테고리의 다른 글
[오라클] 테이블정의서 자동으로 만들어주는 Oracle 쿼리 (Primary Key 여부 포함) (0) | 2017.06.26 |
---|---|
[오라클] 동적쿼리를 실행해서 원하는 값을 가져오는 Oracle 함수 예제 (0) | 2017.06.23 |
[Oracle] 날마다 시퀀스가 초기화되는 오라클 날짜 시퀀스(Sequence) 만들기 (0) | 2017.05.30 |
[Oracle] 오라클 함수(Function)에서 DML(Insert/update/delete)문 사용하기 (0) | 2017.05.26 |
[Oracle] 오라클 export 배치 스크립트 만들어 윈도우 스케쥴러에 등록하여 자동 백업하고 삭제하는 방법 (0) | 2017.05.25 |
댓글