exec dbms_flashback.enable_at_time ( to_timestamp ( '200905121805' , 'yyyymmddhh24mi' ) )
;

select dbms_metadata.get_ddl ( 'VIEW' , 'SYS_LOCATE_INFO_SA312_V' )  from dual
;

exec dbms_flashback.disable;
;



FLASHBACK은 9i부터 지원되는 기능으로, 과거시점에서 질의를 실행할 수 있게 해준다.
FLASHBACK모드(과거시점)는 시간, SCN 2가지중 하나로 지정할 수 있다.

시간으로 지정: dbms_flashback.enable_at_time(query_time IN TIMESTAMP);
SCN으로 지정 : dbms_flashback.enable_at_system_change_number(query_scn IN NUMBER);

나머지 DBMS_FLASHBACK패키지에서 제공되는 프로시저는 다음과 같다.

FLASHBACK모드 해제: dbms_flashback.disable;
현재 SCN파악: dbms_flashback.get_system_change_number(RETURN NUMBER);

SCN은 System Change Number의 약자로 트랙잭션마다 주어지는 번호이다.
SCN을 이용하면 정확한 과거시점을 지정할 수 있지만, 해당 시점의 정확한 SCN을 알아내기가 쉽지 않다.
시간으로 지정시, 데이터베이스는 지정한 시간전후 5분내 발생한 SCN을 임의로 선택하여 FLASHBACK을 enable한다.
따라서, 시간으로 지정할때는 현재보다 5분이상 차이가 나는 과거시점으로 지정해야 한다.

flashback모드를 사용하여 과거의 시점에 있더라도 sysdate는 현재의 시간을 반영하는 것에 주의!

FLASHBACK은 DBMS_FLASHBACK 패키지를 통해 사용할 수 있다.
FLASHBACK은 해당 세션에서만 유효하고, DML, DDL연산은 할 수 없다.
따라서 접속이 종료되면 자동으로 현재 시점으로 돌아오게 된다.

FLASHBACK이 유용하게 사용될 수 있는 부분은 다음과 같다.

. 실수로 삭제한 데이터의 복구
. 과거시점의 데이터에 대한 분석


일반사용자가 FLASHBACK을 이용하기 위해서 DBMS_FLASHBACK패키지에 대한 EXECUTE권한이 있어야 한다.

Automatic UNDO Management(AUM)모드하에서, 언제까지 과거데이터를 유지할 것인지 undo_retention패러미터를
설정함으로써 지정할 수 있다. 초단위로.

Posted by mklee.artist

Trackback Address :: http://www.medianart.com/trackback/202 관련글 쓰기

댓글을 달아 주세요