콘텐츠로 이동

Flashback

요구 사항

  1. UNDO_MANAGEMENT가 AUTO로 되어있을 것
  2. UNDO_RETENTION 파라미터 값 지정
  3. 유저가 Flashback을 사용하려면 DBMS_FLASHBACK에 대한 실행 권한이 있어야할 것

  4. 파라미터 값 확인

    SHOW PARAMETER UNDO;
    /*
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ------------------------------
    _highthreshold_undoretention         integer     16200
    _optimizer_undo_cost_change          string      11.2.0.3
    undo_management                      string      AUTO
    undo_retention                       integer     2400
    undo_tablespace                      string      UNDOTBS1
    */
    
    --AUTO로 변경
    ALTER SYSTEM SET UNDO_MANAGEMENT = AUTO SCOPE = BOTH;
    
    --UNDO 테이블 스페이스 생성
    CREATE UNDO TABLESPACE tablespace_name DATAFILE 'directory\tablespace_name.dbf' SIZE size;
    
    --UNDO 테이블 스페이스 지정
    ALTER SYSTEM SET UNDO_TABLESPACE = tablespace_name;
    
    --UNDO_RETENTION 설정 (Seconds)
    ALTER SYSTEM SET UNDO_RETENTION = 1800;
    
    --DBMS_FLASHBACK 실행 권한 부여
    GRANT EXECUTE ON DBMS_FLASHBACK TO owner_name;
    


기본 형식

SELECT * FROM owner_name.table_name AS OF TIMESTAMP TO_TIMESTAMP('20220427 093824', 'YYYYMMDD HH24MISS')
WHERE ... ;


플래시백 트랜잭션 쿼리 확인

SELECT * FROM SYS.flashback_transaction_query;