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。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |