Flashback query样例(记录)

Oracle9i开始,Oracle提供了Flashback query的特性。其利用Oracle提供的多版本读一致性的特性,通过UNDO来提供所需的前镜像的数据。

    利用Flashback Query特性,可以实现:

    1:恢复丢失的数据或者还原错误更新的数据,即使是已经提交的。

    2:比较现有数据同过去数据差异。

    …..

   

    Flashback Query设置数据库

    1:使用AUM(Automatic undo management)来维护读一致性

       设置UNDO_RETENTION初始化参数,该参数设置决定可以闪回查询好久之前的数据。

       设置UNDO_MANAGEMENT初始化参数为AUTO

       创建拥有足够大空间的UNDO表空间。

       AUMOracle9i的默认设置。

       SQL> show parameter undo

NAME                  TYPE        VALUE

------------------------------------ ----------- ------------------------------

undo_management         string      AUTO

undo_retention            integer     10800

undo_suppress_errors      boolean     FALSE

undo_tablespace           string      UNDOTBS1

    2:授予用户必要的权限

       用户必须有相关表FLASHBACK的权限或者FLASHBACK ANY TABLE的系统权限。

       若使用DBMS_FLASHBACK包,必须有该包EXECUTE的权限,且不能用SYS用户执行该包。

 

     使用Flashback Query的样例

     1: SELECT * FROM tableName AS OF

TIMESTAMP (SYSTIMESTAMP - INTERVAL '60' MINUTE) WHERE ….;

2: SELECT * FROM tableName AS OF

TIMESTAMP TO_TIMESTAMP(‘20070920083059’,‘yyyymmddhh24miss’) WHERE …..;

3: SELECT * FROM tableName AS OF SCN 4122650073 WHERE …..;

4: 使用DBMS_FLASHBACK

    dbms_flashback.enable_at_time(to_timestamp('20-FEB-2002','DD-MON-YY'));

SELECT salary FROM employees WHERE employee_id = 205;

SELECT COUNT(*) FROM employees;

dbms_flashback.disable;

      

      一些说明:

     1Flashback Query仅适用于DML操作,对DDL无效

     29i中采用基于时间点的Flashback Query会有误差,10g中已改进

 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/110321/viewspace-607695/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/110321/viewspace-607695/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值