2014년 8월 24일 일요일

[플래쉬백 버전 쿼리,오라클자바커뮤니티 오라클강좌]Flashback New Feature - Flashback Version Query , 오라클 플래시백 특징

[플래쉬백 버전 쿼리,오라클자바커뮤니티 오라클강좌]Flashback New Feature - Flashback Version Query , 오라클 플래시백 특징

FlashBack Version Query라고 하는 것은 VERSION BETWEEN 구를 이용하여 주어진 기간내의 데이터의 변화에 대한 관찰이 가능 합니다. 

아래의 예를 통해 이해 하도록 하겠습니다. 

CREATE TABLE flashback_test ( 
  id          NUMBER(10), 
  description  VARCHAR2(50) 
); 

INSERT INTO flashback_test (id, description) VALUES (1, 'ONE'); 
COMMIT; 

SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; 

CURRENT_SCN TO_CHAR(SYSTIMESTAM 
----------- ------------------- 
    725202 2004-03-29 14:59:08 
    
UPDATE flashback_test SET description = 'TWO' WHERE id = 1; 
COMMIT; 
UPDATE flashback_test SET description = 'THREE' WHERE id = 1; 
COMMIT; 

SELECT current_scn, TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS') FROM v$database; 

CURRENT_SCN TO_CHAR(SYSTIMESTAM 
----------- ------------------- 
    725219 2004-03-29 14:59:36 

==================================================================== 
    
COLUMN versions_startscn FORMAT 99999999999999999 
COLUMN versions_starttime FORMAT A24 
COLUMN versions_endscn FORMAT 99999999999999999 
COLUMN versions_endtime FORMAT A24 
COLUMN versions_xid FORMAT A16 
COLUMN versions_operation FORMAT A1 
COLUMN description FORMAT A11 
SET LINESIZE 200 

SELECT versions_startscn, versions_starttime, 
      versions_endscn, versions_endtime, 
      versions_xid, versions_operation, 
      description  
FROM  flashback_test 
      VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2004-03-29 14:59:08', 'YYYY-MM-DD HH24:MI:SS') 
      AND TO_TIMESTAMP('2004-03-29 14:59:36', 'YYYY-MM-DD HH24:MI:SS') 
WHERE  id = 1; 

 VERSIONS_STARTSCN VERSIONS_STARTTIME          VERSIONS_ENDSCN VERSIONS_ENDTIME        VERSIONS_XID    V DESCRIPTION 
------------------ ------------------------ ------------------ ------------------------ ---------------- - ----------- 
            725212 29-MAR-04 02.59.16 PM                                                02001C0043030000 U THREE 
            725209 29-MAR-04 02.59.16 PM                725212 29-MAR-04 02.59.16 PM    0600030021000000 U TWO 
                                                        725209 29-MAR-04 02.59.16 PM                      ONE 

==================================================================== 

SELECT versions_startscn, versions_starttime, 
      versions_endscn, versions_endtime, 
      versions_xid, versions_operation, 
      description  
FROM  flashback_test 
      VERSIONS BETWEEN SCN 725202 AND 725219 
WHERE  id = 1; 


 VERSIONS_STARTSCN VERSIONS_STARTTIME          VERSIONS_ENDSCN VERSIONS_ENDTIME        VERSIONS_XID    V DESCRIPTION 
------------------ ------------------------ ------------------ ------------------------ ---------------- - ----------- 
            725212 29-MAR-04 02.59.16 PM                                                02001C0043030000 U THREE 
            725209 29-MAR-04 02.59.16 PM                725212 29-MAR-04 02.59.16 PM    0600030021000000 U TWO 
                                                        725209 29-MAR-04 02.59.16 PM                      ONE 


VERSIONS_STARTSCN or VERSIONS_STARTTIME - 헤당 로우가 그 값을 가진 시작 SCN 번호 또는 일시, NULL이라는 의미는 주어진 조건의 시간 이전에 이미 값이 만들어 졌다는 의미 

VERSIONS_ENDSCN or VERSIONS_ENDTIME - 해당 로우가 마지막으로 그값을 가진 SCN 번호 또는 일시, NULL이라는 의미는 주어진 기간에서는 그 값이 변하지 않고 있었다는 의미 

VERSIONS_XID -현재 상태의 로우에 대한 Transaction ID 

VERSIONS_OPERATION - Operation performed by the transaction ((I)nsert, (U)pdate or (D)elete)  



댓글 없음:

댓글 쓰기