14.5 闪回表(Flashback Table)
本节介绍的闪回表"flashback table"命令能够以表为单位(而不是像闪回事务那样以事务为单位)将数据恢复为"以前"的样子。
因为闪回表也是利用UNDO表空间的撤销数据,所以到底能将表闪回到多久之前同样受到闪回查询4因素的影响,另外切记闪回数据归档不能为闪回表服务。
闪回表的语法十分简单,用以下几个例子便可以说明。
示例1:将hr.employees闪回到10分钟之前:
- SQL> flashback table hr.employees
- 2 to timestamp (systimestamp - interval '10' minute);
- Flashback complete.
示例2:将hr.employees闪回到SCN为1080381的时候:
- SQL> flashback table hr.employees to scn 1080381;
- Flashback complete.
示例3:将hr.employees和hr.departments两张表同时闪回到SCN为1080381的时候(有外键参考关系的表的确可能需要一起闪回):
- SQL> flashback table hr.employees,hr.departments to scn 1080381;
- Flashback complete.
使用闪回表的注意事项如下。
(1)被闪回的表必须启用行移动功能,比如:
- SQL> alter table hr.employees enable row movement;
- Table altered.
(2)"FLASHBACK TABLE"命令的执行者必须有"FLASHBACK ANY TABLE"系统权限或者在被闪回的表上具有"FLASHBACK"对象权限。
(3)"FLASHBACK TABLE"属于ddl命令,所以自带提交(Commit)功能。
(4)SYS用户的任何表无法使用此功能。