`

oracle用delete命令删除数据恢复

 
阅读更多

刚不小心删除了表里的数据,还好找到了这个。

http://hi.baidu.com/kinghmx/blog/item/41ea3551dd6cec521038c2a0.html

 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数据.处理即可

分享到:
评论

相关推荐

    sql恢复oracle数据库delete的数据

    首先,了解Oracle的数据恢复基础至关重要。Oracle数据库提供了Redo日志系统,用于记录所有对数据库的事务性更改。当数据被删除时,这些更改会被记录在Redo日志中。如果在删除数据之前创建了数据库快照或者进行了备份...

    Oracle数据库误删除数据的不同恢复方法整理

    ### Oracle数据库误删除数据的不同恢复方法 #### 一、引言 在日常的数据库管理工作中,数据误删除是一个常见的问题。对于Oracle数据库来说,它提供了一系列强大的数据恢复工具和技术,帮助管理员快速有效地恢复误...

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

    #### 二、误删除数据恢复概述 ##### 2.1 闪回恢复 **闪回恢复**是Oracle提供的一种高级功能,允许用户恢复特定时间点的数据,这对于误删除的情况非常有用。它基于Oracle数据库的事务日志和重做日志,能够帮助用户...

    ORACLE truncate 数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`命令用于删除表中的所有数据,但它与`DELETE`语句有所不同。`TRUNCATE`操作是DDL(Data Definition Language)的一部分,而`DELETE`是DML(Data Manipulation Language)。由于`...

    oracle 通过快照进行数据恢复

    ### Oracle通过快照进行数据恢复 #### 一、引言 在日常的数据库管理工作中,数据丢失或误删除是常见的问题之一。对于Oracle数据库来说,它提供了多种手段来进行数据恢复,其中一种有效的方式就是利用快照...

    ORACLE数据库误操作执行了DELETE,该如何恢复数据?

    #### 二、利用AS OF SCN进行数据恢复 1. **理解AS OF SCN**:在Oracle中,AS OF SCN是一种非常有用的功能,允许用户基于特定的SCN值来查看数据的状态。这对于误删除后的恢复非常有帮助,因为它可以让我们看到删除...

    oracle中truncate table后的数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...

    ORACLE-delete后的回复

    总结起来,Oracle的闪回功能为我们提供了在一定条件下的数据恢复能力,但并不是万能的。防止数据丢失的最好方式还是定期备份数据库,并确保在进行重要操作时启用归档日志模式,以便在必要时通过时间点恢复(Point-in...

    oracle删除数据的恢复

    ### Oracle删除数据后的恢复方法 在Oracle数据库管理中,误删除数据是一个常见的问题。一旦数据被意外删除且已提交(即使用了`DELETE`语句并执行了`COMMIT`),恢复这些数据变得较为复杂。然而,Oracle提供了一些...

    oracle恢复误删数据

    - 首先,确定删除数据时的最新备份,然后使用RMAN恢复到这个备份点,接着应用归档日志直到误删操作之前的时间点。 请注意,恢复数据的效率和可行性取决于你的数据库配置,包括是否启用了闪回选项、是否有足够的...

    oracle 10g flashback(数据恢复)

    ### Oracle 10g Flashback 数据恢复功能详解 Oracle 10g 引入了强大的 Flashback 技术,这是一系列旨在帮助管理员和开发者在出现数据丢失或损坏时能够快速恢复数据的功能集合。该技术从 Oracle 9i 开始引入,并在 ...

    百亿级别海量数据删除方案(不停机维护)

    - **逻辑删除**:如果完全物理删除数据不可行,可以考虑逻辑删除的方式,即通过标记某些记录为已删除状态而不是真正地从数据库中移除它们。 - **优化查询性能**:针对查询频繁的表或字段,优化索引结构,减少查询...

    DataGuard 环境中使用DD 命令恢复数据文件

    ### DataGuard环境中使用DD命令恢复数据文件 #### 一、背景介绍 DataGuard是Oracle数据库提供的高可用性解决方案之一,它允许用户在一个或多个物理位置维护一个或多个完整的辅助数据库副本,这些副本与主数据库...

    ORACLE数据库误操作执行了DELETE,该如何恢复数据?(新)

    Oracle的Flashback功能是恢复误删除数据的有效手段之一。它允许用户将表回滚到某个特定的时间点或SCN(系统更改号)。使用Flashback Table命令可以恢复整个表到指定时间点的状态: ```sql FLASHBACK TABLE ASOFT TO...

    如何正确删除Oracle归档日志

    归档日志是Oracle数据库中用于支持数据恢复的一种重要机制。它记录了所有对数据库所做的更改操作,以便在发生故障时能够恢复数据。归档日志通常存储在特定的位置,例如`/oraarchive`目录下。 #### 三、归档日志清理...

    彻底删除 Oracle 的数据表

    在Oracle数据库管理中,删除数据表是一项常见的操作。然而,为了防止误删导致的数据丢失,Oracle引入了一个名为“回收站”(Recycle Bin)的功能。当用户执行DELETE或DROP命令时,默认情况下,被删除的对象不会立即...

    Oracle 回收站功能,彻底删除表ORA-00933:SQL command not properly ended

    Oracle数据库自10g版本开始引入了回收站功能(Recycle Bin),这一特性为数据库管理员提供了一种简单而强大的方式来恢复误删的数据对象。通过回收站功能,用户可以在不使用备份的情况下恢复已删除的表、索引等数据库...

    delete all delete all delete all delete all

    3. 数据安全:在涉及敏感信息时,"Delete All"可能涉及到安全删除,即使用特殊软件如DBAN(Darik's Boot and Nuke)进行全盘数据销毁,确保信息无法被数据恢复工具找回,以保护隐私。 4. 数据库操作:在数据库管理...

    oracle及sql命令大全

    例如,Oracle的备份与恢复、性能优化、数据导入导出、分布式数据库等高级特性,都是其强大功能的体现。 在实际工作中,了解并熟练掌握Oracle数据库的管理和SQL查询是至关重要的,这不仅能提高工作效率,也能确保...

Global site tag (gtag.js) - Google Analytics