`

闪回 找回已删除的数据

 
阅读更多
SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。
  SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
  注释:Oracle 仅根据 SCN 执行恢复。
  它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,
  这两个名词经常被交替使用。
  究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
  具体执行流程我们可从以下几个示例图中体会;
  1.原表记录 $ sqlplus eygle/eygle
  SQL*Plus: Release 10.1.0.2.0 - Production on Wed Mar 30 08:52:04 2005
  Copyright (c) 1982, 2004, Oracle. All rights reserved.
  Connected to:
  Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - 64bit Production
  With the Partitioning, OLAP and Data Mining options
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  2.误删除所有记录
  并且提交更改。
  SQL>delete from t1;
  9318 rows deleted.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  0
  3.获得当前SCN
  如果能够确切知道删除之前SCN最好,如果不知道,可以进行闪回查询尝试.
  SQL>select dbms_flashback.get_system_change_number from dual;
  GET_SYSTEM_CHANGE_NUMBER
  ------------------------
  10671006
  SQL>select count(*) from t1 as of scn 10671000;
  COUNT(*)
  ----------
  0
  SQL>select count(*) from t1 as of scn 10670000;
  COUNT(*)
  ----------
  9318
  我们看到在SCN=10670000时,数据都在。
  4.恢复数据.
  SQL>insert into t1 select * from t1 as of scn 10670000;
  9318 rows created.
  SQL>commit;
  Commit complete.
  SQL>select count(*) from t1;
  COUNT(*)
  ----------
  9318
  文章2
  误删数据后的还原
  select timestamp_to_scn(to_timestamp('2009-03-13 09:00:00','YYYY-MM-DD HH:MI:SS')) from dual;
  结果:13526973
  将删除时间转换为scn

  select * from reportinfo
  AS OF SCN 13526973
  将reportinfo表中的scn点的数据取出
  然后可以根据这个数据进行还原操作
  create table reporttest as select * from reportinfo where 1=0;
  insert into reporttest select * from reportinfo AS OF SCN 13526973;
  --上面两句应该可以合成一句
  --create table reporttest as select * from reportinfo AS OF SCN 13526973;
  这是reporttest表中就是scn点的reportinfo数据.处理即可


例子:
select dbms_flashback.get_system_change_number from dual;

select count(*) from u_auth_role_user_change as of scn 4362294; --1155

select count(*) from u_auth_role_user_change as of scn 4100026 ; -1161

insert into u_auth_role_user_change select * from u_auth_role_user_change as of scn 4100026;

注:推荐使用scn,由于oracle9i中,因为scn与时间点的同步需要5分钟,如果最近5分钟之内的数据需要Falshback query查询,可能会查询丢失,而scn则不存在这个问题。Oracle10g中这个问题已修正(scn与时间点的大致关系,可以通过logmnr分析归档日志获得)。


Falshback query查询的局限:

1. 不能Falshback到5天以前的数据。

2. 闪回查询无法恢复到表结构改变之前,因为闪回查询使用的是当前的数据字典。

3. 受到undo_retention参数的影响,对于undo_retention之前的数据,Flashback不保证能Flashback成功。

4. 对drop,truncate等不记录回滚的操作,不能恢复。

5. 普通用户使用dbms_flashback包,必须通过管理员授权。命令如下:

SQL>grant execute on dbms_flashback to scott;

分享到:
评论

相关推荐

    oracle找回删除的数据

    在Oracle数据库环境中,误删除数据是一个常见的问题,但幸运的是,通过合理的恢复策略和技术手段,我们通常能够找回这些被删除的数据。以下将详细介绍如何在Oracle环境下执行数据恢复操作,包括理解Oracle的时间戳...

    Oracle数据库误删除数据的不同恢复方法整理(超级实用)

    **原理**:利用Oracle提供的闪回方法,在删除数据之后还未执行大量其他操作的情况下,可以通过闪回的方式直接找回被删除的数据。 **步骤**: 1. **确定删除数据的时间**:需要知道数据被删除的具体时间点。 2. **...

    Oracle恢复误删除数据

    如果在删除数据后还没有进行大量的操作(只要保证被删除数据的块没有被覆写),就可以利用闪回方式直接找回删除的数据。 首先,需要确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。...

    重新找回更新的数据表或删除的存储过程方法

    ### 重新找回更新的数据表或删除的存储过程方法 在Oracle数据库管理中,有时我们可能会误删数据表或存储过程,或者对它们进行了错误的更新操作。这些情况往往会导致数据丢失或业务流程中断,给企业的正常运营带来极...

    Oracle 闪回 找回数据的实现方法

    Oracle 闪回技术是Oracle数据库提供的一个强大的恢复机制,它允许数据库管理员在出现逻辑错误时,迅速恢复到错误发生前的状态,最小化数据损失。闪回技术主要包括闪回查询、闪回事务、闪回表、闪回数据库等,可以在...

    oracle中truncate table后的数据恢复

    请注意,这仅在`ALTER DATABASE ENABLE FLASHBACK ARCHIVE`已执行且未达到闪回日志空间限制的情况下有效。 **3. 无闪回表时的其他恢复方法** - **时间点恢复(Point-in-Time Recovery, PITR)**:如果数据库配置了...

    Oracle 10g的“数据闪回”机制——Oracle 10g系列专栏(一).pdf

    通过使用闪回查询,DBA可以在短时间内找到并恢复已被删除的数据行,极大地简化了数据恢复的过程。 此外,Oracle 10g的“资源回收站”对于管理空间也很有帮助。如果你确定不再需要某个表,可以使用DROP TABLE PURGE...

    oracle如何将删除的表找回

    在Oracle数据库中,数据的删除并不意味着立即永久丢失,尤其是当你使用`DELETE`语句删除数据后,只要没有进行大量的后续操作,就有可能通过特定的恢复机制找回已删除的表或数据。本篇文章将详细解释如何在Oracle 10g...

    oracle数据误删找回

    接着,他们获取了当前 SCN,并通过闪回查询找到了未删除数据的 SCN(10670000)。最后,他们将 SCN 为 10670000 时的数据插入到 "t1" 表中,成功恢复了数据。 类似地,对于另一篇文章中的情况,作者将删除时间转换...

    ORACLE truncate 数据恢复

    4. **操作系统文件恢复**:在某些情况下,如果数据文件没有被覆盖,可能可以通过操作系统级别的文件恢复工具找回。但这通常需要专业知识,并且成功率不能保证。 5. **第三方工具**:市场上有一些专门的数据库恢复...

    第16章Oracle闪回(Flashback)技术.pptx

    7. **闪回丢弃(Flashback Drop)**:类似于操作系统中的“回收站”,被DROP的表或索引可以在闪回丢弃中找回,前提是撤销数据未被清除。 在使用闪回技术时,需要确保有足够的存储空间来保存闪回日志,并且要合理...

    Oracle 数据库应用:第17章 Oracle闪回技术.ppt

    这种功能依赖于撤销数据,使得意外删除的对象有机会被找回。 **闪回版本查询** 允许用户查看特定表在某一时间段内的所有修改记录,这在追踪数据变化历史时非常有用。同样,它基于撤销数据来实现。 **闪回事务查询*...

    oracle误删数据恢复方法

    利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。

    oracle 闪回 flashback

    Oracle 闪回(Flashback)技术是Oracle数据库提供的一种强大工具,主要用于数据恢复和时间点一致性查询。这一技术的核心在于Undo Segment,它记录了数据库中事务的撤销信息。Oracle 10g引入了多种闪回功能,包括...

    恢复drop的表和记录

    1. **闪回限制**:闪回操作依赖于Undo数据的保留时间,如果Undo数据被覆盖,则无法执行闪回。 2. **性能影响**:频繁的闪回操作可能会对数据库性能造成影响,因为它们涉及到大量的磁盘I/O操作。 3. **空间管理**:...

    Oracle 11g 从入门到精通——第十八章(视频教程)

    在本套Oracle 11g的视频教程中,我们将深入探讨Oracle数据库的闪回技术,这是一个强大的工具,用于恢复和管理数据库中的数据。闪回技术是Oracle数据库的一个关键特性,它允许用户“时光倒流”,回溯到数据库的某个...

    BLOG_Oracle 回收站及flashback drop_LHR.pdf

    flashback drop是指Oracle提供的闪回技术中的一种,它允许用户通过闪回查询功能将被删除的对象从回收站中恢复。这个功能使得在误删除对象后能够迅速而准确地恢复数据,缩短了数据恢复的时间,减少了数据丢失的风险...

    闪唯还原

    9. **安全恢复**:在恢复过程中,软件可能不会对原硬盘造成任何额外损害,以保护已存在的数据不被破坏。 10. **技术支持与服务**:提供及时的技术支持和客户服务,解答用户在使用过程中的疑问和问题。 以上是对"闪...

    【总结】oracle恢复误删除数据,解除锁定的等sql语句.doc

    - **闪回表**: 当整个表被误删除时,可以通过`FLASHBACK TABLE`命令恢复到删除前的状态。首先需要知道被删除表的名称。例如: ```sql FLASHBACK TABLE 表名 TO BEFORE DROP; ``` 这条命令将把表恢复到最后一次...

Global site tag (gtag.js) - Google Analytics