본문 바로가기
Database

오라클 락 조회 및 해제 방법

by 전재훈 2019. 1. 24.
반응형


오라클에 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='테이블명'

 

 SESSION_ID

 SERIAL_NO

 OS_USER_NAME

 ORACLE_USERNAME

 STATUS

 24

 1102

 Administrator

ABCDWRK 

 INACTIVE

 92

 4665

 OPS$ABCD

OPS$ABCDUSR 

 INACTIVE

 92

 4665

 OPS$ABCD

 OPS$ABCDUSR

 INACTIVE



5. 락 해제

ALTER system KILL SESSION 'sid, serial#'


 속성

 설명

 sid

 session_id

 serial#

 serial_no 을 의미한다.


예제)

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

 

반응형

댓글