zoukankan      html  css  js  c++  java
  • ORACLE查询闪回

    在Oracle中如果错误地提交了修改操作,然后想查看修改前的值,这时候可以使用查询闪回(query flashback)。

    查询闪回可以根据根据一个时间值或者系统变更号(SCN)进行。

    执行闪回操作,要使用户具有EXECUTE权限,下面以sys身份登录,并授权给store用户

    一、时间查询闪回

    用户store登录,查询customers表

    select * from customers;

    然后update customers set LAST_NAME=LAST_NAME || 's' ;

    commit;

    可以看到LAST_NAME被修改了,现在如何查看修改前的数据呢?

    使用sqlplus store登录,执行如下语句,就可以查看修改之前LAST_NAME 没有加“s”

    DBMS_FLASHBACK.ENABLE_AT_TIME() 该过程将数据库状态闪回到一个特定的时间值。

    DBMS_FLASHBACK.ENABLE_AT_TIME(SYSDATE-10/1440 ) 也就是闪存到10分钟之前。

    现在执行任何查询就将显示10分钟之前的状态。但是在pl/sql中查询的话  还是现在现在的状态。

    所以可以从这里查看之前数据,然后在pl/sql修改回原来的值。

    禁用闪回 EXECUTE DBMS_FLASHBACK.DISABLE();

    这些命令只能在sqlplus 中使用,在pl/sql中不能使用。

    二、系统变更号查询闪回

    根据SCN进行闪回操作比根据时间进行要更精确,因为数据库就是使用SCN来跟踪数据库的变化。

    获得当前SCN命令:

    通过下面语句可以闪回到这个SCN的状态

    EXECUTE DBMS_FLASHBACK.ENABLE_AT_SYSTEM_CHANGE_NUMBER(:CURRENT_SCN);

    禁用闪回操作

    EXECUTE DBMS_FLASHBACK.DISABLE();

  • 相关阅读:
    第六次作业SSM
    第五次作业——MVC2项目实践
    第四次作业——JSP显示新闻
    第三次作业——servlet应用
    第二次作业——模仿登录页面
    第一次作业——Java web基础
    Alpha项目测试
    作业三
    第二次作业
    第一次阅读作业-201731062609-庞斌
  • 原文地址:https://www.cnblogs.com/zwl715/p/3738875.html
Copyright © 2011-2022 走看看