原理: 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来还原误操作数据

  

oracle中闪回错误的dml操作原理的更多相关文章

  1. Oracle的闪回技术--闪回错误的DML操作

    提交DML操作后,该操作使用的还原段就可以被其它对象使用了,为了保证闪回操作时这些数据仍然被保存在还原段中,可能需要重新设置undo_retention参数,表示一个事务提交后,该事务的数据必须保存在 ...

  2. Oracle的闪回操作

    Oracle10g中引入了闪回技术,但这并不意味着所有的表都能闪回成功,当没有足够的磁盘空间,Oracle将使用回收站中的磁盘空间,而且位图连接索引和引用完整性约束也不受回收站的保护. recycle ...

  3. Oracle 六闪回技术,flashback

    Flashback 技术基于Undo segment基于内容的, 因此,限制UNDO_RETENTON参数. 要使用flashback 特征,您必须启用自己主动撤销管理表空间. 在Oracle 11g ...

  4. Oracle Flashback 闪回

    Oracle 的闪回技术是一种数据恢复技术,仅能对用户逻辑错误进行恢复, 闪回针对的是提交commit的事务,没有提交的事务,使用rollback 1.闪回版本查询 Flashback Version ...

  5. Oracle的闪回特性之恢复truncate删除表的数据

    Oracle的闪回特性之恢复truncate删除表的数据 SQL> show parameter flashback NAME                                 T ...

  6. oracle的闪回功能

    ORACLE的闪回功能: navicat 执行删改语句 不用提交直接执行? 感觉很恐怖? 今天一不下心手一滑 选错 结果把数据库的字段全改了 很慌 然后发现 oracle 有一个闪回功能 专门用来补天 ...

  7. [Oracle]Oracle的闪回归档

    Oracle的闪回归档 场景需求,由于管理数据库的一些核心表,在实施初期会有人为误删除的问题.Oracle 11gR2提供了闪回归档的特性,可以保证不用RMAN来恢复误删除的数据.实践如下: 1.创建 ...

  8. Oracle数据库中闪回恢复的详细分析

    Oracle9i开始提供闪回查询,以便能在需要的时候查到过去某个时刻的一致性数据,这是通过Undo实现的.这个功能有很大的限制,就是相关事务的undo不能被覆盖,否则就无力回天了.oracle10g大 ...

  9. oracle之三闪回flashback

    闪回 flashback 5.1 flashback 的功能:1)利用undo data回溯或撤销提交的数据,2)flashback log 使database 可以恢复到过去某个时间点,可以作为不完 ...

随机推荐

  1. zoj Grouping(强连通+缩点+关键路径)

    题意: 给你N个人,M条年龄大小的关系,现在打算把这些人分成不同的集合,使得每个集合的任意两个人之间的年龄是不可比的.问你最小的集合数是多少? 分析: 首先,假设有一个环,那么这个环中的任意两个点之间 ...

  2. JavaScript当中的eval函数

    eval函数 eval函数接收一个由JavaScript语句组成的字符串,并且返回字符串中最后一条语句的返回值,如果最后一条语句没有返回值,那么eval函数返回undefined.如果传递给eval函 ...

  3. Fatal error: Undefined class constant 'MYSQL_ATTR_USE_BUFFERED_QUERY' in D:\inetpub\vhosts\zenpty.com\httpdocs\includes\database

    打开php.ini配置文件,找到php_pdo_mysql.dll,如果前面有分号";"则表示该行被注释掉了,将分号去掉,保存,然后重启apache服务,重新访问页面,问题解决了.

  4. php sscanf() 函数使用

    定义和用法 sscanf() 函数根据指定的格式解析来自一个字符串的输入. 如果只向该函数传递两个参数,数据将以数组的形式返回.否则,如果传递了额外的参数,那么被解析的数据会存储在这些参数中.如果区分 ...

  5. 负载均衡集群之LVS算法和模型

    LVS-->Linux Virtual Server 实现算法-->静态/动态,共10种 静态算法:     rr(round robin):         解析:轮叫算法,即0-9循环 ...

  6. Django auth 登陆后页面跳转至/account/profile,修改跳转至其他页面

    这几天在学习django,django功能很强大,自带的auth,基本可以满足用户注册登陆登出,简单的用户注册登陆系统使用django auth足矣.当然也不是拿来就能用的,需要自己写登陆页面的模板, ...

  7. postgresql创建用户

    (1)内部命令create user 用户名 with superuser password '密码';              先进入数据库后用命令\h create user 查看帮助     ...

  8. 心急的C小加

    描述 C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果 第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则 ...

  9. Typecho 代码阅读笔记(二) - 数据库访问

    转载请注明出处:http://blog.csdn.net/jh_zzz 这一块比较复杂,我还没有完全理解为什么要把 SQL 语句的组装搞这么复杂. 从一个普通皮肤页面开始 themes/default ...

  10. C# 编写服务 Windows service

    1.编写服务教程 http://jingyan.baidu.com/article/ea24bc395e16f8da62b331e7.html 这里不多说了. 给大家一个连接,上面有详细的教程,下面说 ...