zoukankan      html  css  js  c++  java
  • Oracle UNDO表空间

    一、还原数据与还原表空间

    还原数据是:

    • 原始的、修改之前的数据副本

    • 针对更改数据的每个事务处理而捕获

    • 至少保留到事务处理结束

    • 用于支持:

    – 回退操作

    – 读取一致性查询

    – Oracle 闪回查询、Oracle 闪回事务处理和 Oracle 闪回表

    – 从失败的事务处理中进行恢复

    还原信息存储在还原段中,还原段又存储在还原表空间中。

    还原表空间:

    • 仅用于还原段

    • 有特殊的恢复注意事项

    • 只能与单个实例相关联(集群情况还原表空间是分开的)

    • 在任意给定时间,一个给定的实例只能有一个表空间是当前可写还原表空间

    二、事务处理与还原数据

    clip_image001

    • 每个事务处理仅分配一个还原段。

    • 一个还原段可以同时服务多个事务处理。

    三、还原数据与重做数据

     四、相关参数说明

    clip_image002

    以上为默认值。

    启用自动还原管理:UNDO_MANAGEMENT='AUTO'

    设置还原保留时间:UNDO_RETENTION=10800 --这个参数一般设置3小时,设置大点200G左右

    设置还原表空间:UNDO_TABLESPACE='UNDOTBS1'

    五、设置 还原保留时间

    clip_image002[1]

    脚本修改立即生效无需重启:

    alter system set undo_retention=10800

    UNDO_RETENTION 指定已提交的还原信息要保留多长时间(秒),默认为900秒。

    仅在以下情况下才必须设置此参数:

    • 还原表空间启用了 AUTOEXTEND 选项

    • 需要设置 LOB 的还原保留时间

    • 需要保证保留时间

    还原保留时间是建议值,当UNDO表空间满了且没到900秒也会覆盖,如果需要确保必须保留900秒,则需要设置保证还原保留时间

    六、设置 保证还原保留时间

    SQL> ALTER TABLESPACE undotbs1 RETENTION GUARANTEE;--保证还原保留时间

    SQL> ALTER TABLESPACE undotbs1 RETENTION NOGUARANTEE;--不保证还原保留时间

    在有guarantee的保证下,ORACLE将会保证undo信息能够保存到undo_retention设定的值之后才被覆盖,如果这个时候同时执行了很多事物,将undo表空间耗完了,那么那个事物会失败,会报ORA-30036 错误,所以使用guarantee一定要慎用,如果非要使用guarantee,那么尽量将undo 表空间设大一点。

    clip_image003

    七、还原数据的使用

    1、闪回查询

    说明:查询指定时间点的所有数据

    select empno, ename, job, mgr, sal

    from scott.emp

    as of timestamp to_timestamp('2016-01-21 15:10:00', 'yyyy-mm-dd hh24:mi:ss')

    where mgr = 7566;

    2、闪回版本查询

    说明:

    (1)查看两个时间点之间行的所有版本。

    (2)查看更改了行的事务处理。

    注意:

    (1)不能使用 VERSIONS 子句查询外部表、临时表、固定表、视图。

    (2)VERSIONS 子句不能跨 DDL 命令使用。

    (3)段收缩操作已过滤掉。

    SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;--获取SCN

    update…commit;inset…commit;delete…commit;

    SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL;--获取SCN

    select VERSIONS_STARTSCN,versions_starttime,VERSIONS_ENDSCN,versions_endtime,versions_xid,versions_operation

    from employees versions between scn 2797818 and 2797868

    order by VERSIONS_STARTTIME;

    select VERSIONS_STARTSCN,versions_starttime,VERSIONS_ENDSCN,versions_endtime,versions_xid,versions_operation

    from employees versions between timestamp minvalue and maxvalue

    order by VERSIONS_STARTTIME;

       3、闪回表

    说明:

    (1)需要具有对特定表的 FLASHBACK ANY TABLE 或 FLASHBACK 对象权限和具有 SELECT、INSERT、DELETE 和 ALTER 权限。

    (2)FLASHBACK TABLE 命令作为单个事务处理执行,要求获取 DML 排它锁。

    (3)不闪回统计信息,保留当前索引和从属对象。

    (4)操作不能对系统表执行,不能跨DDL操作,会生成还原数据和重做数据。

    ALTER TABLE temp_liutao ENABLE ROW MOVEMENT;

    FLASHBACK TABLE temp_liutao TO TIMESTAMP TO_TIMESTAMP('2016-01-20 16:10:00','YYYY-MM-DD HH24:MI:SS');

    flashback table temp_liutao to timestamp(systimestamp - interval '3'minute);

    flashback table t_topcommsc_request to scn 13884734132482;

    ALTER TABLE temp_liutao DISABLE ROW MOVEMENT;

  • 相关阅读:
    257. Binary Tree Paths
    324. Wiggle Sort II
    315. Count of Smaller Numbers After Self
    350. Intersection of Two Arrays II
    295. Find Median from Data Stream
    289. Game of Life
    287. Find the Duplicate Number
    279. Perfect Squares
    384. Shuffle an Array
    E
  • 原文地址:https://www.cnblogs.com/bbliutao/p/7202093.html
Copyright © 2011-2022 走看看