闪回查询,9i,10G到11G的不断增强
9i开始,oracle推出了闪回查询的功能,即可能查询和恢复历史数据,
依赖于回滚段,受undo_retention参数的控制,只能查询一定时间段以内的历史数据,并且回滚段没有被新的事务覆盖.
10g中,对闪回查询做了较大改进,不再局限于闪回查询,还可用于恢复错误的DDL(Drop)操作、闪回表、闪回数据库等,增加了闪回恢复区(Flashback recovery area)的新特性.
它依赖于flashback Log闪回日志,受db_flashback_retention_target等参数的控制
而11G中又进行了增强,增加了闪回数据存档库的概念,闪回数据可以存放到单独的表空间,不依赖归档日志,
并且更加灵活方便,不同的表可以制定不同的闪回存储策略,而且通过表空间方式来管理,更便于维护闪回数据.
下面以一个例子来说明.
CREATE TABLESPACE zlflashback
DATAFILE 'D:\APP\ADMINISTRATOR\ORADATA\ORCL\zlflashback.dbf'
SIZE 10M AUTOEXTEND ON;
Create Flashback Archive fla_zltab Tablespace zlflashback Retention 1 Month;
alter table 病人信息 flashback archive fla_zltab;
SQL> insert into 病人信息(病人id,姓名) values(1,'巴基斯');
1 row inserted
SQL> commit;
Commit Complete
SQL> update 病人信息 set 姓名='卡巴基斯' where 病人id=1;
1 row Updated
SQL> commit;
Commit Complete
SQL> set time on;
17:12:09 SQL> delete 病人信息 where 病人id=1;
1 row deleted
17:12:29 SQL> commit;
SQL>Select * From 病人信息
As Of Timestamp To_Timestamp('02/20/2008 17:12:09', 'mm/dd/yyyy hh24:mi:ss')
Where 病人id = 1;
病人ID 姓名
------------------- --------------------
1 卡巴基斯
查看闪回事务
Select * From flashback_transaction_query Where table_name='病人信息'
查看有哪些闪回归档库
Select * From dba_flashback_archive;
查看哪些表使用了闪回归档
Select * From User_Flashback_Archive_Tables
参考文档:http://www.oracle.com/technology/global/cn/pub/articles/oracle-database-11g-top-features/11g-transactionmanagement.html
注意,该文档这两个表名有错,flashback_archives,user_flashback_archived_tables
posted on 2008-02-20 18:57 知道得越多知道的越少 阅读(629) 评论(0) 编辑 收藏 举报