본문 바로가기

[오라클 레퍼런스 함수] SCN_TO_TIMESTAMP - 시스템 변경 번호(SCN)에 해당하는 대략적인 타임스탬프(TIMESTAMP) 반환

by ㅇㅍㅍ 2023. 8. 17.
[오라클 레퍼런스 함수] SCN_TO_TIMESTAMP - 시스템 변경 번호(SCN)에 해당하는 대략적인 타임스탬프(TIMESTAMP) 반환
728x90

 

 

 

SCN_TO_TIMESTAMP

 

구문

SCN_TO_TIMESTAMP(number)

 

목적

SCN_TO_TIMESTAMP 함수는 시스템 변경 번호 (SCN)로 평가되는 숫자를 인수로 받아 해당 SCN과 관련된 근사한(approximate) 타임스탬프를 반환합니다. 반환된 값은 TIMESTAMP 데이터 유형입니다. 이 함수는 언제든 SCN과 연결된 타임스탬프를 알고자 할 때 유용합니다. 예를 들어 ORA_ROWSCN 의사 컬럼과 함께 사용하여 행에 대한 최근 변경과 타임스탬프를 연결하는 데 사용할 수 있습니다.

 

노트:
• 결과 값의 일반적인 정밀도는 3초입니다.

• SCN과 타임스탬프 간의 연결은 데이터베이스에서 일정 기간 동안 기억됩니다. 이 기간은 데이터베이스가 자동 Undo 관리 모드에서 실행 중인 경우 자동 조정된 undo 보존 기간의 최대 값이며, 데이터베이스의 모든 플래시백 아카이브의 보존 시간보다 작지 않습니다. 그러나 최소 120시간입니다. 연결이 만료되는 시간은 데이터베이스가 열려 있는 동안에만 경과합니다. SCN_TO_TIMESTAMP에 인수로 지정된 SCN이 너무 오래된 경우 오류가 반환됩니다.

 

참고:

ORA_ROWSCN 의사 컬럼(Pseudocolumn) 및 TIMESTAMP_TO_SCN

 

예제

다음 예제는 ORA_ROWSCN 의사열을 사용하여 행의 마지막 업데이트에 대한 시스템 변경 번호(SCN)를 결정하고, 그 SCN을 타임스탬프로 변환하기 위해 SCN_TO_TIMESTAMP 함수를 사용합니다:

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
   WHERE employee_id = 188;

 

Oracle Flashback Query에서 사용할 시스템 변경 번호(SCN)를 타임스탬프로 변환하는 쿼리를 다음과 같이 사용할 수 있습니다:

SELECT salary FROM employees WHERE employee_id = 188;
    SALARY
----------
      3800

UPDATE employees SET salary = salary*10 WHERE employee_id = 188;
COMMIT;

SELECT salary FROM employees WHERE employee_id = 188;
    SALARY
----------
     38000

 

SELECT SCN_TO_TIMESTAMP(ORA_ROWSCN) FROM employees
   WHERE employee_id = 188;
SCN_TO_TIMESTAMP(ORA_ROWSCN)
---------------------------------------------------------------------------
28-AUG-03 01.58.01.000000000 PM

FLASHBACK TABLE employees TO TIMESTAMP
   TO_TIMESTAMP('28-AUG-03 01.00.00.000000000 PM');

SELECT salary FROM employees WHERE employee_id = 188;  
    SALARY
----------
      3800

 


출처: 오라클 레퍼런스

원문 링크: Oracle SCN_TO_TIMESTAMP 함수 문서

 

반응형

댓글