flashback table
??????????????????????????????????????????????????????FLASHBACK?TABLE 1???flashback?table语法 1)alter?table?test_flash?enable?row?movement;--使用flashback?table要先开启row?movement,负责会抛ORA-08189错误 2)flashback?table?test_flash?to?scn?313101;--闪回表到313101系统变更号 --闪回到某scn 3)flashback?table?tab_test?to?timestamp?to_timestamp('2010-06-30?23:02:37',?'yyyy-mm-dd?hh24:mi:ss')?enable?triggers; --闪回到某个时间点,enable?triggers为可选项 flashback?table?test_flash1?to?timestamp?sysdate-3/1440;?--闪回表到三分钟前 4)flashback?table?a,b?,c?to?scn?1103864; Flashback?table?命令支持同时操作多个表,表名中间以逗号分隔即可,如果你执行一条flashback?table命令时同时指定了多个表,要记住单个flashback?table?是在同一个事务中,因此这些表的恢复操作要么都成功,要么都失败 ? --可以通过对Flashback?Table做SQL?Trace来进一步观察。通过Trace,我们不难发现,Flashback?Table实际是通过Flashback?Query将表中数据进行了一次删除、插入操作,因此ROWID会发生变化。 2???flashback?table使用注意事项 1)sys用户所有的表不支持flashback?table功能 SQL>?flashback?table?test_flash?to?scn?313615; flashback?table?test_flash?to?scn?313615 * ERROR?at?line?1: ORA-08185:?Flashback?not?supported?for?user?SYS --注意sys用户所有的表不支持flashback?table功能(同system表空间对象不支持flashback?drop区分开)
SQL>?flashback?table?test_flash?to?scn?315760?enable?triggers; Flashback?complete. --注意加上enable?triggers选项是让触发器在flashback?table过程中起作用,并不能让触发器触发的表也闪回到之前状态,所以如果一个表上建有触发器,那么我们在flashback?table该表时同时要考虑是否需要把触发的表也恢复的之前的状态() alter?table?test_flash?enable?row?movement; flashback?table?test_flash?to?scn?315760; --flashback?table有触发器的表时不加enable?triggers alter?table?test_flashbak?enable?row?movement flashback?table?test_flashbak?to?scn?315760; --同时把触发器影响的表也恢复到相同的scn ? flashback?table?会对闪回的表加排他锁 SQL>?select?l.object_id,d.object_name,l.session_id,l.locked_mode?from?v$locked_object?l,dba_objects?d?where?d.object_id=l.object_id; OBJECT_ID?OBJECT_NAM?SESSION_ID?LOCKED_MODE ----------?----------?----------?----------- 13952?TEST_FLASH306 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |