zoukankan      html  css  js  c++  java
  • oracle闪回技术

    undo数据保留7天
    orcl> show parameter undo

    NAME TYPE VALUE
    ------------------------------------ ----------- ------------------------------
    _optimizer_undo_cost_change string 12.1.0.2
    temp_undo_enabled boolean FALSE
    undo_management string AUTO
    undo_retention integer 604800
    undo_tablespace string UNDOTBS1
    orcl> select 604800/60/60/24 from dual;

    604800/60/60/24
    ---------------
    7

    一:Oracle Flashback Query (SELECT AS OF),利用undo

    查询指定时间点的表数据

    SELECT * FROM employees
    AS OF TIMESTAMP
    TO_TIMESTAMP('2004-04-04 09:30:00', 'YYYY-MM-DD HH24:MI:SS')
    WHERE last_name = 'Chung';

    二:Oracle Flashback Version Query

    SELECT versions_startscn, versions_starttime,
           versions_endscn, versions_endtime,
           versions_xid, versions_operation,
           last_name, salary
      FROM employees
      VERSIONS BETWEEN TIMESTAMP
          TO_TIMESTAMP('2008-12-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS')
      AND TO_TIMESTAMP('2008-12-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')
      WHERE first_name = 'John';

    三:Oracle Flashback Transaction Query

    Flashback Transaction

    The static data dictionary view *_FLASHBACK_TXN_STATE shows whether a transaction is active or backed out. If a transaction appears in this view, it is backed out.

    Oracle Flashback Transaction Query

    SELECT xid, logon_user
    FROM flashback_transaction_query
    WHERE xid IN (
      SELECT versions_xid FROM employees VERSIONS BETWEEN TIMESTAMP
      TO_TIMESTAMP('2003-07-18 14:00:00', 'YYYY-MM-DD HH24:MI:SS') AND
      TO_TIMESTAMP('2003-07-18 17:00:00', 'YYYY-MM-DD HH24:MI:SS')
    );

    四:闪回表

    闪回表(Flashback table)是利用undo信息来恢复表对象到以前的某一个时间点(一个快照)

    SQL>flashback table test to timestamp to_timestamp('2018-05-20 15:30:00',' yyyy-mm-dd hh24:mi:ss') ;

    SQL>flashback table test to timestamp scn 115544;

    SQL>flashback table test to timestamp to_timestamp('2018-05-20 15:30:00',' yyyy-mm-dd hh24:mi:ss') enable triggers;

    运用闪回表前提 

    1)普通用户中需要有Flashback any table的系统权限。命令如: 

      SQL>grant flashback any table to scott; 

    2)有该表的select、insert、delete、alter权限。 

    3)必须保证该表有row movement(行移动)。

    恢复表到过去的某个时间点,恢复test表到刚记录的时间点(或scn),由于表中存在触发器,因此使用了关键字enable triggers;

    flashback table test to timestamp to_timestamp('2018-05-20 15:30:00',' yyyy-mm-dd hh24:mi:ss') enable triggers;

    五:闪回数据归档

    Static Data Dictionary Views for Flashback Data Archive Files

    ViewDescription

    *_FLASHBACK_ARCHIVE

    Displays information about Flashback Data Archive files.

    *_FLASHBACK_ARCHIVE_TS

    Displays tablespaces of Flashback Data Archive files.

    *_FLASHBACK_ARCHIVE_TABLES

    Displays information about tables that are enabled for Data Flashback Archive files.

     1)、查询哪些表启用闪回数据归档

    SQL> select * from dba_flashback_archive_tables;
    2)、查询数据库中所有的闪回数据归档
    SQL> select flashback_archive_name,retention_in_days from dba_flashback_archive;
    3)、查询有关闪回数据归档所使用的表空间的信息
    SQL> select flashback_archive_name,tablespace_name,quota_in_mb from dba_flashback_archive_ts;

    闪回数据归档的限制
    对于已经启用闪回的表,不能使用DDL命令drop column(11r2可以drop column),但可以add column命令。
    删除属于一个启用了闪回数据归档的表列的唯一方法是首先关闭闪回归档功能。但是,这样会删除所有闪回归档数据。下面这些是11GR2之前不支持的
    1、ALTER TABLE:
    Drops, renames, or modifies a column (11GR2是可以的),Performs partition or subpartition operations,Converts a LONG column to a LOB column
    Includes an UPGRADE TABLE clause, with or without an INCLUDING DATA clause
    2、DROP TABLE
    3、TRUNCATE TABLE (11GR2是可以的)
    4、RENAME TABLE (11GR2也是可以的)

    v$recover_file中查需要恢复的文件

    select * from v$recover_file;

    select file#, status, recover, fuzzy, CHECKPOINT_CHANGE# from v$datafile_header;

    
    

    启用了闪回数据归档之后,表上只允许执行部分指定的ddl,另一些ddl要执行的话,必须停用表的数据归档才可以

    DDL 限制出于安全性和合法兼容性方面的考虑,上述限制可确保闪回数据归档中的数据不会失效。
    对启用了闪回数据归档功能的表使用下述任一DDL 语句都会导致错误ORA-55610:
    • 执行以下任一操作的ALTER TABLE语句:
    – 删除、重命名或修改列
    – 执行分区或子分区操作
    – 将LONG列转换为LOB列
    – 包括UPGRADE TABLE子句(不管有无INCLUDING DATA子句)
    • DROP TABLE语句
    • 执行以下任一操作的ALTER TABLE语句:
    – 删除、重命名或修改列
    – 执行分区或子分区操作
    – 将LONG列转换为LOB列
    – 包括UPGRADE TABLE子句(不管有无INCLUDING DATA子句)

    修改表定义的时候需要取消数据归档,修改完表定义后重新启用数据归档,这样的话,数据归档中表定义修改之前的历史数据就没有了。



  • 相关阅读:
    48.Warning: (vsim-3534) [FOFIR]
    47.MIF和COE文件格式
    46.谈谈SDRAM的作用
    45.modelsim仿真include文件
    44.do文件格式
    43.技术与产品的价值
    42.JTAG接口使用注意
    41.使用Chipscope时如何防止reg_wire型信号被优化掉
    40.格雷码与二进制码之间的转换
    39.原码、反码、补码的转换
  • 原文地址:https://www.cnblogs.com/elontian/p/9078703.html
Copyright © 2011-2022 走看看