自:http://topic.csdn.net/u/20100819/16/0ba394dc-c81e-44d2-9da7-710f0ab7c7b4.html?4730
同事找回时操作的数据库为oracle 10g , 之前删除方式为delete 不晓得trancate好使不
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数据.处理即可
分享到:
相关推荐
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
### Oracle误删数据恢复 在Oracle数据库管理过程中,误删数据是常见的问题之一。当遇到这类情况时,Oracle提供了一种强大的数据恢复机制——回闪(Flashback)功能。通过回闪功能,用户可以在特定的时间点恢复已...
oracle 数据恢复 误删恢复 111111111111111111111111111111111111111111111111111111111111111111111111
Oracle数据库管理系统是世界上最广泛使用的数据库之一,其强大的数据恢复和管理功能为企业提供了可靠的数据保障。在日常操作中,有时可能会发生误操作,如误删除数据或锁定问题,本篇文章将详细讲解如何在Oracle中...
### Oracle数据库误删除数据的不同恢复方法 #### 一、引言 在Oracle数据库管理中,误删除数据是一种常见的错误操作,可能导致重要的业务数据丢失。为了应对这种情况,Oracle提供了多种数据恢复的方法,包括闪回恢复...
这对于恢复误删数据非常有用。 - **备份**: 定期对数据库进行备份是非常重要的。当数据丢失或损坏时,可以通过备份恢复到某个时间点的状态。 #### 三、恢复方法详解 ##### 方法1:通过Oracle提供的回闪功能恢复 *...
本篇文章将详细探讨如何在Oracle中恢复误删的重要数据,以及如何采取预防措施以避免此类情况的发生。 首先,理解Oracle的数据恢复机制至关重要。Oracle数据库提供了一套完整的恢复策略,包括归档日志模式、闪回功能...
--闪回到15分钟前 --闪回到某个时间点 --闪回到两天前
无论是单条记录的误删还是整张表的删除,Oracle都提供了多种恢复手段。合理利用这些工具和技术,不仅可以避免数据丢失的风险,还能最大限度地减少对业务的影响。当然,在实际操作过程中还需要根据具体情况选择最适合...
Oracle 数据库是一个广泛使用的事务处理系统,其强大的功能包括数据恢复机制,这在数据误删的情况下显得尤为重要。本文将深入探讨如何在 Oracle 10g 中找回被误删的数据,主要涉及 SCNs(系统改变号)的概念及其在...
Oracle 恢复误删除数据 Oracle 数据库是企业级的关系数据库管理系统,广泛应用于各种行业。然而,在实际操作中,误删除数据是一种常见的错误。因此,了解如何恢复误删除数据是非常重要的。本文将详细介绍 Oracle ...
本文将详细介绍一种在Oracle数据库中恢复误删数据的方法,主要涉及Oracle 9i及更高版本引入的闪回查询(Flashback Query)技术。 首先,当用户误删数据后,如果没有启用任何备份机制,传统的恢复方式通常需要DBA...
误删数据恢复步骤如下: 1. **开启归档模式**:为了使用logmnr进行数据分析,数据库需要处于归档模式。如果尚未开启,需要执行ALTER DATABASE ARCHIVELOG命令切换到归档模式。 2. **收集必要的日志信息**:需要...
在很多时候由于操作失误,程序出错会误删表或数据,本文档可以将oracle数据库误删表,或者误删数据,即时恢复。
Oracle 9i 是一款强大的关系型数据库管理系统,其在数据安全和恢复方面提供了诸多功能,其中闪回功能(Flashback)是一项重要的数据恢复工具。闪回功能允许用户恢复误删除或误修改的数据,大大增强了数据库的安全性...
运行在虚拟机的Linux下,解决误删了oracle的表空间,不用重装oracle
在没有启用闪回功能的情况下,恢复误删数据的传统方法是依赖于备份和归档日志。通过使用RMAN(Recovery Manager)工具,我们可以从最近的备份中恢复数据,或者通过分析归档日志来还原数据至删除前的状态。这种方法...
根据实际情况选择合适的方法,并确保在执行删除操作前充分测试,以避免误删重要数据。在处理大量数据时,建议先在小规模数据集上测试,确保SQL语句的正确性和效率。此外,在生产环境中操作之前,一定要备份数据,以...
对于“oracle恢复表数据”的主题,本文将深入探讨几种常见的恢复方法,并结合给定的描述与部分代码示例进行详细解释。 ### Oracle恢复表数据概览 在Oracle数据库环境中,数据丢失可能由多种原因引起,如误操作、...