Flashback Table
Flashback Table也是使用UNDO tablespace来实现对数据的回退。输入:flashback table table_name to scn(to timestamp) 即可。
注意:必须允许表的row movement.(Alter table table_name row movement;)
要查看某表是否启用row movement,可以到user_tables 中查询(或all_tables,dba_tables),例如:SQL> select row_movement from user_tables where table_name='C';ROW_MOVE--------ENABLED
要启用或禁止某表row movement,可以通过下列语句:
--启用JSSWEB> ALTER TABLE table_name ENABLE ROW MOVEMENT;表已更改。--禁止JSSWEB> ALTER TABLE table_name DISABLE ROW MOVEMENT;表已更改。
举例:SQL> create table C (id number(2));表已创建。SQL> insert into C values(1);已创建 1 行。SQL> insert into C values(2);已创建 1 行。SQL> commit;提交完成。SQL> select * from c; ID---------- 1 2SQL> alter session set nls_date_format="yyyy-mm-dd hh24:mi:ss";会话已更改。
SQL> select sysdate from dual;SYSDATE-------------------2009-10-15 21:17:47SQL> select current_scn from v$database;CURRENT_SCN----------- 1103864删除数据并恢复
SQL> delete from C;已删除2行。SQL> commit;提交完成。SQL> alter table c enable row movement;表已更改。SQL> flashback table c to scn 1103864;闪回完成。或者:SQL> flashback table c to timestamp to_timestamp('2009-10-15 21:17:47','yyyy-mm-dd hh24:mi:ss');SQL> select * from c; ID---------- 1 2Flashback table 命令支持同时操作多个表,表名中间以逗号分隔即可,如果你执行一条flashback table命令时同时指定了多个表,要记住单个flashback table 是在同一个事务中,因此这些表的恢复操作要么都成功,要么都失败。如:flashback table a,b ,c to scn 1103864;
