오라클 디비에서 락이 걸리는 이유는 다양합니다.
누군가 sql 실행 중 Commit을 안 했다던지, 배치가 실행 중이라던지 등등
Truncate 같은 명령은 ORA-00054라는 에러라도 출력하지만...
DML(Delete) 문장 실행 시 그냥 멈쳐버립니다.
오라클 재시작!!!
하면 간단하게 처리됩니다만.--^^;
하지만 DB 특성상 재시작 할 수 없는 경우가 많죠~
그때는 Lock 걸린 세션을 찾아서..
Kill 해주면 됩니다.
※ 아래 작업은 사용자 계정으로는 조회가 안되니 관리자 권한으로 하여야 합니다.
(SYSTEM 계정으로 로그인)
1. 먼저, TABLE의 LOCK(락) 객체 검색
SELECT A.SID
, A.SERIAL#
, C.OBJECT_NAME
, A.SID || ', ' || A.SERIAL# AS KILL_JOB
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 = 'JAMES_MAIL' -- 해당 테이블이 있으면 지정할 수 있다.
;
위의 실행결과 세션 값
SID SERIAL#
------- ----------
2715 40427
2. 실행 결과에 따른 세션 죽이기 ( KILL SESSION)
# Kill은 이렇게...
alter system kill session '2715,40427';
이렇게 찾아지면 죽일 수 있습니다.
수고하셨습니다.~~
'Oracle' 카테고리의 다른 글
[ORACLE DB] 오라클에서 정규표현식 Regexp 함수 사용 방법 (0) | 2021.10.23 |
---|---|
오라클 날짜 계산 함수 (다음주, 마지막날, 요일 구하기 등등) (0) | 2021.10.04 |
Oracle SQL Plus 실행 명령어 모음 (0) | 2020.09.26 |
Oracle DB에서 SQL 쿼리로 달력 만들기 (0) | 2020.09.25 |
Oracle 무료 데이터베이스 Oracle Xe 2020년 기준 (0) | 2020.08.12 |