zoukankan      html  css  js  c++  java
  • [bbk4759] 第28集 第三章 Flashback Table 05

    实现Flashback table操作的前提条件

    权限及及开启movement row功能

    /*************************************************************************/

    实验:flashback table操作

    1、emp1-7369-900

    2、emp1-7369-900-1000

         error where deptno=20---7369-1900

    3、flashback version query

    4、flashback table---recover

    总结:

      1、比incomplete recovery 影响返回小,保证数据库online

      2、当表的子集发生错误操作时,可以通过flashback table功能实现.

    /*************************************************************************/

    SQL> create table emp1 as select * from emp;
    
    Table created.
    
    SQL> select empno,sal,deptno from emp1 where deptno = 20;
    
         EMPNO        SAL     DEPTNO
    ---------- ---------- ----------
          7369        800         20
          7566       2975         20
          7788       3000         20
          7876       1100         20
          7902       3000         20
    
    SQL> select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') current_date from dual;
    
    CURRENT_DATE
    -------------------
    2013-05-17 07:43:04
    SQL> update emp1 set sal = 1900 where deptno = 20;
    
    5 rows updated.
    
    SQL> commit;
    
    Commit complete.

    step 3 :使用flashback version query,定位数据变化.

    SQL> l
      1  select versions_xid,versions_starttime,versions_endtime,empno,sal
      2  from emp1
      3  versions between timestamp
      4     to_timestamp('2013-05-17 07:43:04','yyyy-mm-dd hh24:mi:ss')
      5     and maxvalue
      6* where empno = 7369
    SQL> /
    
    VERSIONS_XID     VERSIONS_STARTTIME        VERSIONS_ENDTIME               EMPNO        SAL
    ---------------- ------------------------- ------------------------- ---------- ----------
    02001000EE080000 17-MAY-13 07.55.05 AM                                     7369       1900
                                               17-MAY-13 07.55.05 AM           7369        800

    开启emp1表的行移动功能

    SQL> alter table emp1 enable row movement;
    
    Table altered.

    闪回emp1表

    SQL> flashback table emp1 to timestamp
      2   to_timestamp('2013-05-17 07:43:04','yyyy-mm-dd  hh24:mi:ss');
    
    Flashback complete.

    验证数据

    SQL> select empno,sal,deptno from emp1
      2   where deptno = 20;
    
         EMPNO        SAL     DEPTNO
    ---------- ---------- ----------
          7369        800         20
          7566       2975         20
          7788       3000         20
          7876       1100         20
          7902       3000         20

    Flashback Table:Considerations

    • The FLASHBACK TABLE command executes as a single transaction,acquiring exclusive DML locks.
      • Flashback Table操作相当于一个DML操作,独立的锁机制;要么都成功,要么都失败
    • Statistics are not flashed back.
      • 执行Flashback table之后,数据字典中相应的statistics data不会发生变化.
    • Current indexes and dependent objects are maintained
      • Oracle database在执行Flashback table后,会自动维护相应的索引及对象信息;
      • 比如与表对应的materialized views数据,oracle database也会自动进行维护,与变化后的数据保持一致.
    • Flashback Table operations
      • Cannot be performed on system tables
        • 假如在system用户下,建了业务表,这种表也是不能进行闪回操作的.
      • Cannot span DDL operations
      • Generate undo and redo data
  • 相关阅读:
    base64编码的字符串与图片相互转换
    超酷3D照片展示效果
    table内容保存到Excel中
    项目管理--PMBOK 读书笔记(3)【项目经理的角色 】
    项目管理--PMBOK 读书笔记(2)【项目运行环境】
    项目管理--PMBOK 读书笔记(1)【引论】
    C# ASP.NET递归循环生成嵌套json结构树
    将XML转换为JSON并强制数组
    Yapi Docker 部署
    Spring Cloud Feign+Hystrix自定义异常处理
  • 原文地址:https://www.cnblogs.com/arcer/p/3083050.html
Copyright © 2011-2022 走看看