flashback 쿼리 사용방법

오라클 10g 이상버전에서 가능 flashback이 설정되어 있는 DB의 경우 아래와 같이 commit 시점 이전의 데이터를 조회하여 복원이 가능하다.
-- 특정시점 데이터 복원
SELECT * FROM employee AS OF TIMESTAMP 
   TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
   WHERE name = 'JOHN';

INSERT INTO employee 
    (SELECT * FROM employee AS OF TIMESTAMP 
     TO_TIMESTAMP('2003-04-04 09:30:00', 'YYYY-MM-DD HH:MI:SS')
     WHERE name = 'JOHN');


-- 60분 이전 데이터 복원
CREATE VIEW hour_ago AS
  SELECT * FROM employee AS OF
    TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE);


INSERT INTO employee 
   (SELECT * FROM employee AS OF 
        TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE))
   MINUS SELECT * FROM employee);

-- 특정시간 사이의 데이터 확인
SELECT   A.*
       , VERSIONS_STARTTIME, VERSIONS_ENDTIME, VERSIONS_XID, VERSIONS_OPERATION
    FROM employee
         VERSIONS BETWEEN TIMESTAMP TO_TIMESTAMP('2015-03-18 14:35:00', 'YYYY-MM-DD HH24:MI:SS') 
                      AND TO_TIMESTAMP('2015-03-18 14:45:00', 'YYYY-MM-DD HH24:MI:SS') A
   WHERE name = 'JOHN'
ORDER BY VERSIONS_ENDTIME;

You may also like...

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다