• 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();

  • 相关阅读:
    Buffer cache spillover: only buffers
    11g中如何禁用自动统计信息收集作业
    OTN中文技术论坛清净的ORACLE讨论之地
    关闭磁盘自动运行
    #error
    在VC++中实现无标题栏对话框的拖动
    string,CString,char*之间的转化
    关于注册表
    #pragma once
    extern "C"用法详解
  • 原文地址:https://www.cnblogs.com/zwl715/p/3738875.html
Copyright © 2020-2023  润新知