其实就是临时restore point的思想,有了enable_at_time(scn)我们在执行flashback query或者flashback versions query时就不需要写as of 和versions between 子句了。
[@more@]SQL> select * from tt;
ID NAME
---------- --------------------
1 a
2 e
4 d
SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
8504779
SQL> exec dbms_flashback.enable_at_system_change_number(8504779);
PL/SQL procedure successfully completed.
SQL> select * from tt;
ID NAME
---------- --------------------
1 a
2 e
4 d
SQL> insert into tt values(5,'f');
insert into tt values(5,'f')
*
ERROR at line 1:
ORA-08182: operation not supported while in Flashback mode
SQL> exec dbms_flashback.disable;
PL/SQL procedure successfully completed.
SQL> insert into tt values(5,'f');
1 row created.
SQL> commit;
Commit complete.
SQL> exec dbms_flashback.enable_at_system_change_number(8504779);
PL/SQL procedure successfully completed.
SQL> select * from tt;
ID NAME
---------- --------------------
1 a
2 e
4 d
SQL> exec dbms_flashback.disable;
PL/SQL procedure successfully completed.
SQL> select * from tt;
ID NAME
---------- --------------------
1 a
2 e
4 d
5 f
SQL>
--================================
SQL> select systimestamp from dual;
SYSTIMESTAMP
---------------------------------------------------------------------------
28-JAN-13 08.52.55.875000 AM +08:00
SQL> insert into tt values(6,'g');
1 row created.
SQL> commit;
Commit complete.
SQL> exec dbms_flashback.enable_at_time(to_timestamp('28-JAN-13 08.52.55','DD-MON-YY HH24:MI:SS'));
PL/SQL procedure successfully completed.
SQL> select * from tt;
ID NAME
---------- --------------------
1 a
2 e
4 d
5 f
SQL> insert into tt values(7,'g');
insert into tt values(7,'g')
*
ERROR at line 1:
ORA-08182: operation not supported while in Flashback mode
SQL> exec dbms_flashback.disable;
PL/SQL procedure successfully completed.
SQL>
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/19602/viewspace-1060165/ ,如需转载,请注明出处,否则将追究法律责任。