闪回表使用undo表空间中的信息,而不是还原备份来获取表。
当执行闪回表操作时,新的行被删除,老的行被重新插入。
在表的闪回操作被执行的时候,数据库的其余部分仍然可用。
在一个或多个表上使用闪回表功能,要使用带有目标时间或SCN的FLASHBACK TABLE语句。
使用闪回表功能必须具有下面的权限:
n FLASHBACK ANY TABLE系统权限/在指定表上的FLASHBACK对象权限
n 表上的SELECT、INSERT、DELETE、ALTER权限
n 闪回表到还原点,需要SELECT ANY DICTIONARY/FLASHBACK ANY TABLE/SELECT_CATALOG_ROLE
符合闪回要求的对象,需要满足:
n 对象不能是下面的类别:作为簇的一部分的表、物化视频、高级队列(AQ)表、静态数据字典表、系统表、远程表、对象表、嵌套表、单独的表分区或子分区。
n 在当前时间和目标闪回时间期间,表的结构不能被改变。
下面的DDL语句会改变表的结构:
u 升级、移动、截断表
u 给表添加约束、给簇添加表
u 修改和删除列
u 添加、删除、merging、splitting、coalescing、截断分区或子分区(添加范围分区除外)
n 必须在表上开启行移动,这意味着在闪回之后rowid有可能改变。
如果在闪回之前在应用程序中存储了rowid,则在闪回之后不保证rowid保持不变。
如果你的应用程序依赖于rowid,则不要使用闪回表。
n 在undo表空间中的数据必须在时间上向前扩展的足够大来满足闪回目标时间或SCN的需要。
能够执行闪回操作到的点是由undo保留期来决定的。
undo保留期是undo数据在被回收之前被保留的最小时间,是表空间的特征。
undo数据包含数据块被改变之前的信息。闪回操作使用undo数据来重新创建原始的数据。
为了确保undo信息为闪回表操作而保留,建议对undo表空间设置UNDO_RETENTION参数为86400(秒),即24小时或更大。
注意:FLASHBACK TABLE…TO BEFORE DROP是使用闪回删除功能,而不是闪回表功能。来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/17013648/viewspace-1095799/ ,如需转载,请注明出处,否则将追究法律责任。