z

BLOG ARTICLE 오라클 | 3 ARTICLE FOUND

  1. 2013.03.04 오라클 테이블/레코드 락.
  2. 2011.02.16 oracle currentTimeInMillis
  3. 2007.02.08 Oracle Error Code List


원본출처: http://www.enjoydev.com/blog/46


오라클에서는 테이블의 일부 레코드 또는 테이블에 대한 Lock을 걸수 있다.

Lock이 걸린 Record(Table)에 대해서는 Commit, Rollback문을 수행하기 전까지 다른 세션에서 Delete, Update를 할 수 없다.

하지만 Lock을 걸더라도 다른 세션에서 Select는 가능하다.


▣ Table Lock
  - 문법 : lock table TABLE_NAME in exclusive mode;
  - Table Lock이 걸린 테이블에 대해서는 다른 세션에서 Insert, Update, Delete를 할 수 없다.
  - Table Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
  - Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.

▣ Record Lock
  - 문법 : select * from TABLE_NAME where CONDITION for update;
  - "for update" 키워드를 이용한다.
  - "for update" 를 이용한 Select 문에서의 CONDITION에 해당하는 레코드들에 대해 Lock이 설정된다.
  - Lock이 걸린 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 없다.
  - Lock이 걸리지 않은 Record들에 대해서는 다른 세션에서 Delete, Update를 할 수 있다.
  - Record Lock을 걸더라도 다른 세션에서 테이블에 대한 Insert는 가능하다.
  - Record Lock이 걸리더라도 다른 세션에서 Select는 가능하다.
  - Commit, Rollback 문장 실행으로 Lock을 풀 수 있다.


[Example1] - Table Lock
-- EMP 테이블에 대해 Insert, Delete, Update를 금지한다.

LOCK TABLE EMP IN exclusive mode


[Example1] - 모든 레코드에 대한 Record Lock
-- EMP 테이블의 모든 레코드에 대해 Delete, Update를 금지한다
SELECT *
  FROM EMP
   FOR UPDATE


[Example1] - 일부 레코드에 대한 Record Lock
-- EMP 테이블에서 "empno = 100" 조건의 레코드에 대해 Delete, Update를 금지한다
SELECT *
  FROM EMP
 WHERE empno = 100
   FOR UPDATE

AND

  
-- 현재시간부로 주어진 시간(HHMM)이 얼마나 남았는지 체크
   SELECT ABS(
                      CASE WHEN DIFF >= 0 THEN (86400 - DIFF)
                                ELSE DIFF
                      END
                     ) * 1000 AS  REMAIN
   FROM
   (
        SELECT ROUND((SYSDATE - TO_DATE(TO_CHAR(SYSDATE,'YYYYMMDD') ||
                     '17' || '30' || '00','YYYYMMDDHH24MISS')) * 86400 ) DIFF
          FROM DUAL
   )

-- 1970년1월1일0시0분0초 이후 지나간 초 구하기
    SELECT
                 ROUND (
                 (SYSDATE-TO_DATE('19700101000000','YYYYMMDDHH24MISS') * 86400 - 32400 /*32400은 GMT 9시간 보정*/)
                 ) CURRENT
    FROM DUAL
AND

Oracle Error Code List

개발/DB 2007. 2. 8. 15:01
  오라클 에러코드..
AND