zoukankan      html  css  js  c++  java
  • oracle中闪回错误的dml操作原理

    原理: Oracle根据还原表空间信息,利用还原表空间中的数据,类似一致性读取方法,可以把表置于一个删除前的时间点(SCN),从而将数据找回。

    删除删除错误的dml操作的oracle的前提准备:

    一、保证可以闪回两个小时之前的数据

      show parameter undo_retention

      显示事务在undo表空间中至少保存的时间。表示一个事务提交以后,该事务的数据至少要在还原表空间中保存的undo_retention参数指定的时间(秒).

      alter system set undo_retention=7200

    二、还原表空间相关的参数

      

      SQL> show parameter undo;

      NAME                                TYPE       VALUE

      ------------------------------------ ----------- ------------------------------

      undo_management                     string     AUTO

      undo_retention                        integer    900

      undo_tablespace                       string     UNDOTBS1

      其中undo_management = auto,设置自动undo管理AUM),该参数默认设置为:auto;(必须设置为自动管理的还原表空间,否则不能实现闪回数据)

      Undo_retention = n(),设置决定undo最多的保存时间,其值越大,就需要越多的undo表空间的支持

      undo_tablespace指定系统使用的当前的还原表空间。

    三、设置足够大的还原表空间

      虽然设置undo中保存两个小时的数据,但是如果表空间上的dml操作过于频频导致占用了大量的undo表空间。还原表空间上没有足够的空间时oracle会使用undo_retention参数要求保留的磁盘空间,即这部分空间中的数据将被覆盖掉,无法恢复错误的dml操作。通常报错为“表结构的定义被修改了”

    四、闪回错误的dml操作主要根据具体的情况有三种方法:

      1、已知需要闪回的时间使用基于 as of snc(timestamp)的闪回查询获得指定时间(scn)的数据

      2、闪回版本查询,查询在undo_retention指定的时间内保存的 between scn minvalue and maxvalue。获取索引的版本快照信息

      3、闪回事务查询,根据闪回版本查询获得修改操作提交的事务号,根据flashback_transcation_view视图获得undo_sql来还原误操作数据

     

      

  • 相关阅读:
    SGA_MAX_SIZE,SGA_TARGET以及PRE_PAGE_SGA参数
    关于DataPump的external_table模式
    undo backup optimization does not work on 11.2.0.1?
    发一个Oracle Dba招聘启事
    ORA600[4194]错误一例
    ORA00600: internal error code, arguments: [kdsgrp1] example
    Pending Problem
    如何修复重编译Datapump工具expdp/impdp
    Mysql:备份、还原、恢复:Mysqldump——标准免费的通用备份工具
    Mysql:SQL语句:DDL语句
  • 原文地址:https://www.cnblogs.com/moonfans/p/3969060.html
Copyright © 2011-2022 走看看