티스토리 뷰
v$lock 뷰에서 타입 컬럼: TM 락은 DML(개체에 대한 액세스 동기화 관련)
그 외 290가지 락 타입 존재
DDL, DML 작업시 ORA-00054 에러 발생. 오브젝트에 락 걸려서 일 수 있다.
-- 작업중인 오브젝트(테이블) 알때
-- 해당 테이블에 LOCK 확인 및 sid, serial#까지 확인
SELECT A.SID, A.SERIAL#, B.TYPE, C.OBJECT_NAME
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 IN ('테이블명');
-- 작업중인 테이블 모를때
SELECT DO.OBJECT_NAME, DO.OWNER, DO.OBJECT_TYPE, DO.OWNER,
VO.XIDUSN, VO.SESSION_ID, VO.LOCKED_MODE
FROM V$LOCKED_OBJECT VO, DBA_OBJECTS DO
WHERE VO.OBJECT_ID = DO.OBJECT_ID;
-- 3. 락 발생 사용자 SQL과 텍스트 조회
SELECT DISTINCT X.SESSION_ID, A.SERIAL#, D.OBJECT_NAME, A.MACHINE, A.TERMINAL,
A.OSUSER, A.PROGRAM, B.ADDRESS, B.PIECE, B.SQL_TEXT
FROM V$LOCKED_OBJECT X, V$SESSION A, V$SQLTEXT B, DBA_OBJECTS D
WHERE X.SESSION_ID = A.SID AND
X.OBJECT_ID = D.OBJECT_ID AND A.SQL_ADDRESS = B.ADDRESS
ORDER BY B.ADDRESS, B.PIECE;
-- 세션 킬
ALTER SYSTEM KILL SESSION 'SID, SERIAL';
-- DML 수행 후 COMMIT, ROLLBACK 하지 않아 DBMS가 대기중이 원인일 수 도 있다.
-- 그럴 때는 COMMIT 또는 ROLLBACK 수행해서 해결한다.
'Database > Oracle Database' 카테고리의 다른 글
[오라클] TEMPORARY TABLESPACE 관련 (0) | 2022.02.28 |
---|---|
[오라클] buffer busy wait 조회 (0) | 2022.02.27 |
[오라클] 명령어 종류 (SQL, PL/SQL, SQL*Plus) (0) | 2022.02.25 |
[오라클] 다른 데이터베이스로 impdp 사용해 데이터 밀어넣는 방법 (0) | 2022.02.24 |
[SQL*Plus] 윈도우 영문 버전 sql*plus 한글 깨짐 문제 해결 방법 (0) | 2022.02.22 |
댓글