回闪表中的数据
执行回闪表操作不需要非凡的设置。唯一的要求是表必须具有可移动的行--或者是在创建表时设置,或者是在以后利用 ALTER TABLE ACCOUNTS ENABLE ROW MOVEMENT语句设置。FLASHBACK TABLE语句从撤消段中(undo segment)读取该表的过去映像,并利用Oracle9i中引入的回闪查询重建表行。
假如模式所有者之外的非DBA用户执行回闪表操作,她需要拥有对该表的SELECT、 DELETE、INSERT、ALTER和FLASHBACK权限,或者拥有等价的ANY TABLE系统权限。
flashback table table1,table2.... to timestamp to_timestamp ('12/31/2003 23:00:00','mm/dd/yyyy hh24:mi:ss');
回闪删除的表
flashback table table3 to before drop;
回闪数据库
通过设置以下两个参数来配置一个大小为2GB的回闪区域:
db_recovery_file_dest = /usr/users/oracle/10.1/recovery_area
db_recovery_file_dest_size = 2G
使用以下参数,以分钟为单位配置最大回闪时间:
db_flashback_retention_target = 1440
这一数值反映出可以返回的最大时间;实际可能的时间由快闪恢复区域的可用空间大小来决定。所以这三个参数都是动态的,并可以使用ALTER SYSTEM命令进行设置。
使数据库能够回闪。为此,它必须处于archivelog模式下。在MOUNT阶段,在OPEN之前,John发出如下命令:
alter database flashback on;
在启动Flashback Database之后,它定期将已发生变化的块写入一个非凡类型的称作回闪日志的日志文件中。这些日志不是由传统的Log Writer (LGWR) 过程写入,而是由一种称作Recovery Writer (RVWR)的新过程写入。与常规的重做日志(redo logs)不同,回闪日志既不需要由DBA创建,也不需要由他们维护;它们由Oracle Managed Files(OMF)自动在快闪恢复区域所指定的目录中创建。这些文件不会归档,所以,假如在该目录发生介质故障后就不可能再进行恢复。
软件开发网
回闪操作
在所描述的Acme银行的事例中,John认为在他所处的情况下回闪表不太可行。他不得不将整个数据库回滚到过去的某个时间点。他再一次选择晚上11:00作为开始点,并发出以下命令:
flashback database to timestamp
to_timestamp ('12/31/2003
23:00:00','mm/dd/yyyy hh24:mi:ss');