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

    闪回查询

    查看当前数据库中的3个参数,其中UNDO_MANAGEMENT:指定回滚段的管理方式,如果设置为AUTO。则采用撤销表空间自动管理回滚信息
    UNDO_TABLESPACE:指定用于回滚信息自动管理的撤销表空间名
    UNDO_RETENTION:指定回滚信息的最长保留时间

    //查询参数
    
    SQL> show parameter undo;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- -----------------------------
    undo_management                      string      AUTO
    undo_retention                       integer     900
    undo_tablespace                      string      UNDOTBS1
    可以通过使用ALTER SYSTEM命令改变各个参数的数值例如:
    SQL> alter system set undo_retention = 1200;
    
    系统已更改。
    //查看修改后的各个参数的数值
    SQL> show parameter undo;
    
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- -----------------------------
    undo_management                      string      AUTO
    undo_retention                       integer     1200
    undo_tablespace                      string      UNDOTBS1
    
    
    1.基于as of timestamp的闪回查询及恢复操作示例。
    
    SQL> alter session set nls_date_format='YYYY-MM-DD HH24:MI:SS';
    
    会话已更改。
    
    SQL> set time on;
    14:23:12 SQL> select empno,sal from scott.emp where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       1500
    
    14:25:24 SQL> update scott.emp set sal = 2000 where empno = 7844;
    
    已更新 1 行。
    
    14:26:04 SQL> commit;
    
    提交完成。
    
    
    14:26:38 SQL> update scott.emp set sal = 2500 where empno = 7844;
    
    已更新 1 行。
    
    
    14:26:56 SQL> update scott.emp set sal = 3000 where empno = 7844;
    
    已更新 1 行。
    
    
    14:27:41 SQL> commit;
    
    提交完成。
    
    14:27:45 SQL> update scott.emp set sal = 3500 where empno = 7844;
    
    已更新 1 行。
    
    14:28:16 SQL> commit;
    
    提交完成。
    (1)查询7844号员工的当前工资值。
    
    14:28:20 SQL> select empno, sal from scott.emp where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       3500
    (2)查看7844号员工前一个小时的工资值
    14:29:07 SQL> select empno, sal from scott.emp as of timestamp sysdate-1/24 wh
    e empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       1500
    (3)查看第一个事务提交,第二个事务还没有提交时7844号员工的工资、
    14:30:48 SQL> select empno, sal from scott.emp as of timestamp to_timestamp ('
    13-5-15 14:27:41','YYYY-MM-DD HH24:MI:SS') where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       2000
    (4)查看第二个事务提交,第三个事务还没有提交时7844号员工的工资、
    14:34:29 SQL> select empno, sal from scott.emp as of timestamp to_timestamp ('
    13-5-15 14:28:16','YYYY-MM-DD HH24:MI:SS') where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       3000
    
    
    
    (5)如果需要还可以将数据恢复到过去的某个时刻,下面是恢复到2013-05-15 14:28:16时刻的状态
    14:39:14 SQL> update scott.emp set sal = ( select sal from scott.emp as of tim
    tamp to_timestamp('2013-05-15 14:28:16','YYYY-MM-DD HH24:MI:SS') where empno =
    7844) where empno = 7844;
    
    已更新 1 行。
    
    14:40:16 SQL> commit;
    
    提交完成。
    
    14:40:25 SQL> select empno, sal from scott.emp where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       3000
    2.基于as of scn 的闪回查询
    14:40:57 SQL> select current_scn from V$database;
    
    CURRENT_SCN
    -----------
         649161
    
    14:44:11 SQL> select empno, sal from scott.emp where empno = 7844;
    
         EMPNO        SAL
    ---------- ----------
          7844       3000
    
    15:00:07 SQL> update scott.emp set sal = 5000 where empno = 7844;
    
    已更新 1 行。
    
    15:00:40 SQL> commit;
    
    提交完成。
    
    15:00:48 SQL> update scott.emp set sal = 5500 where empno = 7844;
    
    已更新 1 行。
    
    15:01:18 SQL> commit;
    
    提交完成。
    
    15:01:22 SQL> select current_scn from V$database;
    
    CURRENT_SCN
    -----------
         649964
    
    //查询scn = 649161时的7844号员工工资 
    15:02:24 SQL> select empno, sal from scott.emp as of scn 649161 where empno
    44;
    
         EMPNO        SAL
    ---------- ----------
          7844       3000
  • 相关阅读:
    2020毕业设计选用4412开发板,实战教程,小成果不放过
    学习嵌入式有决心4412再送免费教程
    iTOP4412开发板can测试工具使用文档
    iTOP4412Ubuntu系统源码ubuntu没有声音的解决办法
    修身养性,为人处事100条
    用X++实现有规律分割的长字符串,分别提取(如逗号隔开)
    自定义Dialog中对数组的取值
    Common实现任何Form定位查询转到当前Form种过滤符合条件的数据区域
    用X++得到当前用户是否有某Security Key的权限级别,完整Job演示
    获取table中的系统字段信息
  • 原文地址:https://www.cnblogs.com/lidaojian/p/3079885.html
Copyright © 2011-2022 走看看