캠핑과 개발

오라클을 사용할때 

어느 순간 데이터가 삭제가 않되는 상태가 발생했다. 

일명 테이블에 락이 걸린것이다.

테이블에 락이 걸리는 이유 사용중 비정상적이 종료로 인해서 발생한다.


락을 제거하기 위해서는 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


 

형식 

alter system kill session 'sid, serial#'

sid : session_id

serial# : serial_no 을 의미한다.


alter system kill session '24, 1102'; 

commit ;

 

 

출처 : http://twinstarbox.tistory.com/entry/%EC%98%A4%EB%9D%BC%ED%81%B4-%ED%85%8C%EC%9D%B4%EB%B8%94-%EB%9D%BD-%EC%A3%BC%ED%9A%8C-%ED%95%B4%EC%A0%9C-%EB%B0%A9%EB%B2%95

'DEVELOPMENT > Database' 카테고리의 다른 글

ORACLE 리스너 시작 종료  (0) 2014.04.02
ORACLE 테이블 스페이스 관리 명령  (0) 2014.04.02
MySQL Table Schema 확인  (0) 2012.05.17
mysql DB 백업  (0) 2012.05.17
MySQL table 용량 확인  (0) 2012.05.17