在介绍flashback之前先介绍下undo_retention相关参数
undo_retention:表示undo数据的过期时间。系统默认这个时间设置为900即15分钟。但要注意,保证undo数据在这个时间内有效的前提是undo表空间有
足够的空间存储。如果undo空间已满且又有新事务执行则会覆盖原来的undo数据而不管undo数据是否过期。不过,如果undo空间足够,
尽管undo数据已经 过了指定的时间,只要不被覆盖,该undo数据还是存在,因此也还是能够被执行flashback闪回(但是必须在增删改
表记录之前先执行alter table table_name enable row movement即允许该表进行行移动,否则过了指定的时间该undo数据尽管没被
覆盖也会无法闪回了,会提示ora-01466错误)。
如果想确保undo数据有效期为undo_retention指定的时间,可以通过 为undo表空间指定Retention Guarantee,如下:
Alter tablespace undotbs1 retention guarantee;(禁止的话执行:Alter tablespace undotbs1 retention noguarantee;)这样就可以保证undo表空间尽管已经满了,有新事务出现也不会去覆盖未过期的undo数据。当然此时的新事务执行就要卡住了。
具体参考http://blog.itpub.net/post/602/469270
FLASHBACK TABLE只是针对表的增删改操作进行闪回