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
  • 相关阅读:
    Console.WriteLine输出字符格式化
    GridView动态生成列问题
    日历控件,可运行在XHTML1.0下
    GridView內容導出Excel時異常:必须置於有 runat=server 的表单标记之中
    圆弧分割
    矩阵变换
    使用group by 来统计的小作业
    group by 后使用 rollup 子句总结
    mysql字符串拼接,存储过程,(来自网上看到)
    【深入理解Linux内核】《第二章 内存寻址》笔记 (2014-06-28 12:38)
  • 原文地址:https://www.cnblogs.com/arcer/p/3083050.html
Copyright © 2011-2022 走看看