Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选

首页 / 数据库 / MySQL / Oracle 10g 查询闪回功能应用

在Oracle中如果错误地提交了修改操作,然后想查看并修改原来的值,这时候可以使用查询闪回(query flashback).
    查询闪回可以根据根据一个时间值或者系统变更号(SCN:System Change Number)进行,数据库使用SCN来跟踪对数据进行的修改,因此可以用它来闪回到数据库中一个特定的SCN时的状态. 一.执行闪回操作,需要使用DBMS_FLASHBACK包,登录用户要具有此包的EXECUTE权限,下面以sys身份登录,并授权给用户EXECUTE权限: CONNECT SYS/P@ssw0rd AS SYSDBA;GRANT EXECUTE ON SYS.DBMS_FLASHBACK TO UserName; 二.时间查询闪回1.执行SQL语句从products中查询前五条记录,如下:SELECT product_id, name, price, SYSDATE AS TIMEFROM productsWHERE product_id <= 5;2.更新记录,如下:SELECT product_id, NAME, price, SYSDATE AS TIMEFROM productsWHERE product_id <= 5;3.执行DBMS_FLASHBACK.ENABLE_AT_TIME()语句,闪回到一个特定的时间,如下:DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE - 10 / 1440);闪回到10分钟之前(24h * 60mins = 1440Mins).4.现在执行查询,结果如下:5.禁用闪回 EXECUTE DBMS_FLASHBACK.DISABLE(); 在再次启用闪回操作前,必须先将其禁用.这些命令只能在sqlplus中使用,在pl/sql中不能使用. 三.系统变更号查询闪回根据SCN进行闪回操作比根据时间进行要更精确,因为数据库就是使用SCN来跟踪数据库的变化.1.获得当前SCN命令:VARIABLE curr_scn NUMBER;EXECUTE :curr_scn := DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER();print curr_scn2.插入一条记录.SELECT * FROM products;INSERT INTO products(product_id, product_type_id, NAME, DESCRIPTION, price)VALUES(13, 5, "Kobe Bryant", "No.24", "24.00");SELECT * FROM productsWHERE product_id = 13;3.通过DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER()语句可以闪回到这个SCN的状态,需要一个SCN参数.EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:curr_scn);4.查询刚刚插入的数据,没有任何记录.SELECT * FROM productsWHERE product_id = 13;5.禁用闪回操:EXECUTE DBMS_FLASHBACK.DISABLE();
Oracle Flashback 闪回查询功能9i和10g的区别MySQL sql语句最大长度设置方法相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数