개발 공부중

[ORACLE] 오라클 테이블 락(LOCK) 해제 방법 본문

ORACLE

[ORACLE] 오라클 테이블 락(LOCK) 해제 방법

개발자 leelee 2024. 6. 17. 23:13

 

작업을 하다가 테이블이 렉 걸린 것 처럼 커밋이 안되는 상황이 생겼다.

 

오라클에서 테이블 락(Lock) 확인하고 해제하는 방법

테이블 확인하고 

1. 락 걸린 테이블 확인하기

SELECT DISTINCT object_id 
FROM v$locked_object 
WHERE oracle_username = '사용자명';

 

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'; --테이블 수준의 DML 락

 

  • sid:세션 아이디
  • serial#:시리얼 번호

(참고)

  • username: 데이터베이스 사용자 이름
  • osuser: 운영 체제 사용자 이름
  • machine: 세션이 실행 중인 머신 이름
  • program: 세션이 실행 중인 프로그램 이름

 

4. 락 걸린 세션 종료하기 

ALTER SYSTEM KILL SESSION 'sid,serial#';
ALTER SYSTEM KILL SESSION '123,45678';

 

Comments