[ Oracle - Lock List 보기 및 Lock 해제 ]
☞ 참고 |
|
LOCK 해결방법 (ORA-00054 해결 방법) |
☞ 방법1 |
|
1. Lock List 찾기 SELECT B.USERNAME USERNAME, C.SID SID, C.OBJECT OBJECT,A.SQL_TEXT SQL FROM V$SQLTEXT A, V$SESSION B,V$ACCESS C WHERE A.ADDRESS = B.SQL_ADDRESS AND A.HASH_VALUE = B.SQL_HASH_VALUE AND B.SID = C.SID AND C.OWNER = 'USER ID' ;
|
2. Lock 삭제 alter system kill session '150,101'; --세션ID, Serial# |
☞ 방법2 |
|
1. Lock List 찾기 select a.sid, a.serial#, b.type, c.object_nam 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 = 'FSFE1_STRACK_INFO' |
2. Lock 삭제 alter system kill session '150,101'; --세션ID, Serial# | |
☞ step |
|
STEP 1 : Lock 이 발생한 OBJECT 확인
SELECT object_id, object_type FROM dba_objects WHERE object_name='테이블 / 인덱스 이름';
STEP 2 : Lock 을 잡고 있는 세션 ID 확인
SELECT * FROM v$locked_object WHERE object_id='STEP1에서 검색한 object_id';
(오라클 사용자 이름과 세션 ID 를 기억해 둔다)
STEP 3 : Lock 을 잡고 있는 세션의 Serial 번호 확인
SELECT sid, serial#, command, taddr FROM v$session WHERE sid='STEP2의 세션 ID 번호';
STEP 4 : 세션 강제 종료
ALTER SYSTEM KILL SESSION '<세션 ID, Serial#>';
STEP 5 : 세션 종료 확인 및 Rollback 체크
SELECT used_ublk FROM v$transaction WHERE ADDR='<STEP3의 TADDR>';
|
|