본문 바로가기

Oracle/admin

v$lock 뷰의 LMODE에 대해..

v$lock 에 있는 lmode 컬럼에는 아래와 같이 총 6가지의 값을 나타낸다.

1,'No lock',
--
말그대로 lock이 없다

2,'Row Share'
--
Transaction에 의해서 걸리는 row share table lock은 동시에
동일한 table에 대한 query, insert, delete, update, lock row를 허용한다. 그러므로,
다른 transaction은 동일한 table에 대해 동시에 row share, row exclusive, share,
그리고 share row exclusive table lock을 걸 수가 있다.

3,'Row Exclusive'
--
Row Exclusive는 Row share보다 제한적이다.
Transaction에 의해서 거리는 row exclusive table lock은
동시에 동일한 table에 대해서 다른 transaction들이  row들을 query, insert, delete,
update, lock 하는 것을 허용한다. 그러므로, row exclusive table lock들은 여러
transaction이 동일한 table에 대해 동시에 row exclusive, row share table lock을
거는 것을 허용한다.

4,'Share'
--
Transaction에 의해서 걸리는 share table lock은 다른
transaction들이 단지, table에 대한 query, SELECT ... FOR UPDATE를 이용한 특정 row에 대한
lock, LOCK TABLE ... IN SHARE MODE문들을 성공적으로 수행하기 위해서 허용한다; 다른
transaction에 의한 갱신은 허용하지 않는다. 여러 transaction이 동일한 table에 대해 동시에
share table lock을 수행할 수 있다. 이 경우에 어떠한 transaction도 table을 update할 수 없다
(Transaction이 SELECT ... FOR UPDATE문장의 결과로써 row lock들을 유지할 지라도). 그러므로 만약 다른 transaction이 동일한 table에 대해 share table lock을 또한 가지지 않을 때에만 share
table lock을 가지는 transaction이 update 할 수 있다.

5,'Share Row Exclusive'
--
한 시점에 주어진 table에 대해
하나의 share row exclusive table lock만이 걸릴 수 있다.
transaction에 의해 걸린 share row exclusive table lock은
다른 transaction이 query을 하거나 SELECT ... FOR UPDATE로
특정 row를 lock하는 것을 허용하나 table의 갱신은 허용하지 않는다.

6,'Exclusive'
--
Exclusive table lock은 다른
transaction이 그 table을 query하는 것만 허용한다. Exclusive
table lock은 어떤 종류의 DML문이나 어떤 종류의 lock도 금지한다.

'Oracle > admin' 카테고리의 다른 글

커서 공유  (0) 2015.09.14
VIEW 생성,VIEW 조회 권한 부여,SYNONYM 생성  (0) 2015.09.14
Datafile rename  (0) 2015.09.14
rman catalog 생성  (0) 2015.09.14
LOB syntax  (0) 2015.09.14