使用oracle的闪回查询的特点就是在SELECT的子句使用AS OF 条件。通过在AS OF 条件后指点SCN 或是 timestamp查询过去某一个时间内已提交的数据。
实现闪回查询很简单,下面我们测试一下。
1、确定数据库启用AUM,并且undo 表空间为autoextend
SQL> show parameter undo
NAME TYPE VALUE
------------------------------------ ---------------------- ------------------------------
undo_management string AUTO
undo_retention integer 900
undo_tablespace string UNDOTBS1
2、确定需要闪回的时间点或是SCN
SQL> select current_scn from v$database;
CURRENT_SCN
-----------
4883652
3、假设更改了HR用下employees表的某条数据,并且已经提交
SQL> update employees set phone_number='515.123.0987' where employee_id=100;
SQL> commit;
SQL> select employee_id,first_name,last_name,phone_number from employees where last_name = 'King';
EMPLOYEE_ID FIRST_NAME LAST_NAME PHONE_NUMBER
---------------------- ----------------------------- -------------------------------------------------- ----------------------------------------
156 Janette King 011.44.1345.429268
100 Steven King 515.123.4567
4、查询employee_id 为100 的员工未更改前的手机号码,就可以使用AS OF子句的闪回查询技术了,发现更改前号码515.123.4567
SQL> select employee_id,first_name,last_name,phone_number from employees as of scn 4883652 where last_name = 'King';
EMPLOYEE_ID FIRST_NAME LAST_NAME PHONE_NUMBER
---------------------- ----------------------------- -------------------------------------------------- ----------------------------------------
156 Janette King 011.44.1345.429268
100 Steven King 515.123.4567
使用闪回查询技术可以找回错误提交或是修改的数据,避免用户错误。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27039319/viewspace-2139901/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/27039319/viewspace-2139901/