본문 바로가기
오라클 게시판/오라클 함수

[오라클 SQL 함수] TIMESTAMP_TO_SCN 함수

by 기서무나구물 2021. 10. 21.

포스팅 목차

     

    TIMESTAMP_TO_SCN

     


    문법

    timestamp_to_scn::=

     


    목적 

    TIMESTAMP_TO_SCN함수는 인수로써 timestamp 값을 지정하여서 timestamp와 관련된 시스템 변경 번호(system change number, SCN)를 반환한다.

    반환된 값의 데이터 형은 NUMBER이다. 이 함수는 특정한 timestamp와 연관된 SCN을 아는데 유용하다.

     

    SCN (System Change Number)
    트랜잭션이 커밋될 때마다 오라클 서버는 트랜잭션에 커밋 SCN(System Change Number)을 지정합니다. SCN은 데이터베이스 내에서 유일한 값이며 증가합니다. SCN은 데이터가 데이터 파일로부터 읽힐 때 데이터를 동기화하고 읽기 일관성(read consistency)을 제공할 수 있도록 오라클 서버가 내부 "time stamp"로 사용합니다. SCN을 사용함으로써 오라클 서버는 운영 체제의 날짜나 시간에 의존하지 않고 일관성 검사를 수행할 수 있습니다.

    오라클은 트랜잭션이 커밋될 때, 특정 시점의 데이터베이스 상태를 정의하기 위해 고유번호인 SCN을 할당한다. SCN은 내부적으로 타임스탬프의 역할을 맡으며, 일련번호로서 고유한 값을 가지고 계속해서 증가한다. 데이터베이스는 언제나 SCN을 기초로 하여 복구되기 때문에 SCN을 통하여 데이터베이스의 읽기 일관성을 제공하게 된다. SCN은 또한 데이터 자체의 읽기 일관성 유지에도 사용된다. 어떤 쿼리가 실행 단계에 이르게 되면 현재의 SCN이 확정되고, 오직 이보다 작거나 같은 SCN을 가진 블록들만이 읽히게 된다. 변경된 블록(더 높은 SCN을 가진)에 대해서는 데이터가 롤백 세그먼트로부터 읽힌다.

     


    예제

    다음 예제는 oe.orders 테이블에 행을 삽입하고, 삽입 연산의 시스템 변경 번호를 판단하기 위하여 TIMESTAMP_TO_SCN을 이용한다. (실제로 SCN은 각 시스템마다 다른 값을 반환)

    Oracle Program
    INSERT INTO orders (order_id, order_date, customer_id, order_total)
       VALUES (5000, SYSTIMESTAMP, 188, 2345);
    1 row created.
    
    COMMIT;
    Commit complete.
    
    SELECT TIMESTAMP_TO_SCN(order_date) FROM orders
       WHERE order_id = 5000;

     

    Results
    TIMESTAMP_TO_SCN(ORDER_DATE)
    ----------------------------
                          574100

     

     


    오라클 SQL 함수(Oracle SQL Function) 목록 리스트 링크

     

    [SQL, Pandas, R Prog, Dplyr, SQLDF, PANDASQL, DATA.TABLE] SQL EMP 예제로 만나는 테이블 데이터 처리 방법 리스트 링크
    반응형

    댓글