Flashback Table 注意事项

一、基于undo的表恢复

1、被恢复的表必须启用row movement

       用于控制是否允许修改列值所造成的记录移动

        enable/disable

SQL> selectrow_movement from dba_tables where table_name='FLASH_TBL';

 

ROW_MOVE

--------

ENABLED

 

2、注意DDL的影响。

修改并提交过数据后,对表做了DDL操作,如:

Drop/modify 列。

move表

drop分区

Truncatetable/partition

这些操作会令undo表空间的撤销数据失效,对于执行过这些操作的表应用flashback query会触发ORA-01466错误,另外一些表结构修改语句,虽然可能不会影响到undo表空间的撤销记录,但有可能出现因表结构修改,导致UNDO中重做记录无法应用的情况。

如:对操作的表增加了新的约束,而flashback query查询出来的undo 记录已经不符合新建的约束条件,这个时候直接恢复显然不可能成功,最好先disable约束或逻辑修改数据,然后执行恢复。

 

3、flashback table实际上也是dml操作(从该操作在被操作的表上加dml锁可以确定),因此需要注意triggers对其的影响。默认执行时会disable与其表相关的triggers,如果希望期间可用,需要flashback table时附加enable triggers

 

4、索引会自动维护,但是统计信息不回恢复到指定的时间点。

 

5、不支持:聚簇表、物化视图、高级队列表,系统表,远程表,对象表,嵌套表,表分区或子分区。

 

二、基于recycle bin的表恢复

1、flashback drop 不能恢复参照完整性。主外键约束等需要手工处理。

 

2、操作的表必须是存在本地管理的表空间中。不能恢复数据字典管理的表空间中删除的表。

 

3、索引、约束等关联对象名称不回自动恢复成删除前的名称,而是系统自动生成的名称。需要手工改名。位图索引不能被恢复,因为删除表时位图索引不会放入recycle bin中。

 

4、删除表时,依赖它的物化视图会同时删除,但是物化视图不放入recycle bin中,因此执行

Flashback table to before drop时,也不能恢复依赖其的物化视图,需要dba手工创建。

 

5、数据文件空间不足时,oracle会首先清理被删除表的索引,所以flashback table to

Before drop后发现恢复出来的数据缺少索引可能是正常的,说明显然错过了最佳的回复时机。

 

6、flashback drop支持多个表,用逗号隔开,但是记住单个flashback table 是在同一个事务中,因此这些表恢复时要么都成功,要么都失败。

 

7、flashback drop只能恢复drop删除的表,如果通过truncate命令清空表中的数据,不过是flashback table还是 flashback query都无能为力。唯一恢复truncate的flashback特性是flashbackdatabase。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值