개발(Web)/DB

[Oracle] 데이터 충돌

shinyelee 2020. 9. 22. 15:40

데이터 충돌에 대해 알아보자.

Ⅰ. Lock이란?

* 동일한 시간에 동일한 데이터에 대해서 서로 다른 세션이 동시에 작업하는 것을 막기 위해 Oracle은 DML 발생 시 관련 행 단위로 lock을 구현함.

* lock은 트랜잭션 종료(commit, rollback) 시 해제됨.

* lock이 구현된 행에 작업 요청 시 Queue(큐)에서 기다림.


Ⅱ. Lock 충돌 발생 예

1. 커밋되지 않은 트랜잭션

2. 긴 트랜잭션

편의상 왼쪽은 hr1, 오른쪽은 hr2로 지칭.
hr1과 hr2가 동시에 접속해 서로 다른 행을 수정하는 것은 아무 문제가 없다.
h2가 먼저 작업하고 커밋하지 않은 내용 위에 h1이 작업하면 대기 상태가 된다. h1의 작업 내용은 h2가 커밋한 후 반영된다.


Ⅲ. Lock 충돌 발생 시 해결방법

1. EM을 사용한 모니터링

2. 데이터 딕셔너리뷰를 사용한 모니터링

데이터 딕셔너리뷰를 사용한 모니터링.
모니터링을 통해 현재 접속중인 유저를 파악할 수 있다.

3. Lock 충돌 해결

Lock 충돌 해결.

출처 : 아이티윌 부산교육센터 Oracle Database 12c : 실습가이드북

반응형