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 ALTER TABLE 表名 ENABLE ROW MOVEMENT; FLASHBACK TABLE 表名 TO TIMESTAMP TO_TIMESTAMP('删除时间点', 'yyyy-mm-dd ...
如果幸运的话,你可以通过备份快速恢复数据文件。 2. **关闭数据库**:为防止进一步的数据损坏,首先要确保数据库处于静止状态。使用`shutdown immediate`命令快速关闭数据库。 3. **恢复模式切换**:启动数据库...
此时,可以利用Oracle提供的闪回功能直接恢复数据。 **2. 具体步骤** - **确定删除时间点**:找到数据被删除的具体时间。 - **查询删除数据**:使用如下SQL语句查询被删除的数据: ```sql SELECT * FROM 表名 AS...
当需要恢复数据时,可以通过快照回溯到之前的状态,从而实现数据恢复。快照在Oracle中有两种类型:表快照和数据库快照。 - **表快照**:只包含单个表的信息。 - **数据库快照**:包含整个数据库的信息。 #### 三、...
在Oracle数据库中,`TRUNCATE TABLE`命令用于删除表中的所有数据,但它与`DELETE`语句有所不同。`TRUNCATE`操作是DDL(Data Definition Language)的一部分,而`DELETE`是DML(Data Manipulation Language)。由于`...
3. **使用闪回功能**:如果数据库启用了闪回功能,可以尝试使用`FLASHBACK DATABASE`或`FLASHBACK TABLESPACE`命令来恢复数据文件到删除前的状态。但请注意,这需要足够的还原窗口,并且可能对其他事务产生影响。 4...
对于 drop 表的情况,也可以直接用闪回方法恢复数据(要保证被删除数据的块没有被覆写)。 Oracle 在删除表时,没有直接清空表所占的块,而是把这些已删除的表的信息放到了一个虚拟容器“回收站”中,而只是对该表的...
Oracle 数据恢复是指在数据丢失或损坏后,利用备份文件和归档日志等手段恢复数据的过程。恢复通常分为完全恢复和不完全恢复两种。 1. **完全恢复**:完全恢复是指将数据库恢复到最新状态的过程。这意味着从最近的一...
在日常操作中,有时可能会发生误操作,如误删除数据或锁定问题,本篇文章将详细讲解如何在Oracle中恢复误删除数据以及解锁相关操作。 1. **恢复误删除数据** 当你不小心删除了数据库表中的数据时,Oracle提供了一...
### Oracle删除数据后的恢复方法 在Oracle数据库管理中,误删除数据是一个常见的问题。一旦数据被意外删除且已提交(即使用了`DELETE`语句并执行了`COMMIT`),恢复这些数据变得较为复杂。然而,Oracle提供了一些...
为了恢复数据,首先需要确定误删除数据之前的SCN值。这可以通过`DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER`函数来查询当前系统的SCN。 ```sql SELECT DBMS_FLASHBACK.GET_SYSTEM_CHANGE_NUMBER FROM DUAL; ``` 假设...
### Oracle通过DBF恢复数据 #### 一、背景介绍 在日常工作中,Oracle数据库作为企业级数据管理系统之一,经常面临着各种意外情况,如误删除、误操作或系统故障导致的数据丢失。在这种情况下,如何有效地恢复数据...
在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...
通过阅读`oracle数据恢复.txt`、`oracle热备份步骤.txt`和`oracle冷备份步骤.txt`,你可以更深入地理解并掌握这些关键概念和实践技巧,从而确保你的Oracle数据库在面对数据丢失或系统故障时能够迅速恢复,保持业务...
1. **闪回查询(Flashback Query)**:如果数据库开启了闪回功能,可以通过闪回查询回溯到删除操作之前的状态,查看并恢复数据。`FLASHBACK TABLE table_name TO TIMESTAMP before_time;` 或 `SELECT * FROM table ...
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
下面将详细介绍这些方法,以及如何在已提交的DELETE操作后恢复数据。 首先,当执行了`DELETE`语句并提交(`COMMIT`)后,数据通常会被永久删除,除非在删除前开启了某种形式的保护机制,如事务日志或闪回功能。...
备份数据库的数据文件,重新命名即可,然后重新安装数据库,安装完成后,打开控制面板,停止 oracle 的服务,把新生成的文件改名,把原先目录下的文件恢复名字。重新启动 oracle 服务和监听,用 sys/as dba 登陆...
"Oracle数据恢复工具"在这些领域提供支持,帮助用户在数据灾难发生时尽可能地恢复数据完整性。 描述中的"DMP文件恢复"提到了Oracle的一种数据导出导入格式——DMP(Data Pump Export)文件。DMP文件是Oracle Data ...
总之,Oracle11g的DBF恢复数据是一个涉及多个层面的过程,需要对Oracle数据库的内部机制有深入理解。通过有效的备份策略、详细的恢复计划和熟练的操作技巧,可以确保在面临数据灾难时能够迅速恢复,最小化业务中断。