오라클에 lock이 걸렸을때 처리하는 방법입니다.
일반 계정으로는 처리가 불가능하며 SYSTEM 계정(관리자) 계정으로 만 작업이 가능합니다.
1. 락이 걸린 테이블 확인
select *
from v$locked_object
where oracle_username = 'oracle user name';
2. 락이 걸려있는 테이블 갯수 확인
SELECT count(*)
FROM v$locked_object vo , dba_objects do
WHERE vo.object_id = do.object_id
3. 락 걸린 세션 확인
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'
4. 락이 걸린 테이블명을 알고 있는 경우
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='테이블명'
|
5. 락 해제
ALTER system KILL SESSION 'sid, serial#'
예제) ALTER system KILL SESSION '24, 1102'; commit ; 출처 : https://m.blog.naver.com/PostView.nhn?blogId=yysvip&logNo=220131425247&proxyReferer=https%3A%2F%2Fwww.google.com%2F |
'Database' 카테고리의 다른 글
오라클 DELETE, UPDATE 후 복구하기 (3) | 2019.02.14 |
---|---|
오라클 SET UNUSED (0) | 2019.01.25 |
MySQL 정규식 한글, 영문, 특문, 숫자 제거 (REGEXP_REPLACE) (0) | 2018.12.05 |
오라클 로그인된 계정의 모든 테이블 삭제 (0) | 2018.11.05 |
ORA-12560: TNS:프로토콜 어댑터 오류 (2) | 2018.11.05 |
댓글