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;
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;
发表评论
-
一个故事讲清楚NIO(转载)
2015-10-22 11:32 653假设某银行只有10个职 ... -
一些数据库自定义函数
2013-10-15 21:42 912oracle 写法: --联系人列表 create or r ... -
如何远程连接db2数据库
2012-09-18 10:10 952在DB2数据库中,编目(catal ... -
[转]DB2行列转换
2012-09-13 13:15 865行转列 给出下面的数据: CREATE TABLE Sales ... -
存储过程 入门
2012-09-07 09:49 891示例说明:先创建一个临时表,并插入数据,然后查询临时表,返回游 ... -
ue使用的一些小技巧
2012-09-05 11:36 12521. UE里面替换tab键为空格 解决使用UE编辑好 ... -
ext tree 更改图标
2012-04-16 23:11 1690如果在Java代码中树的Node不设置cls的话,Extjs ... -
js六种数据类型和var
2012-04-13 14:32 1247JavaScript 有六种数据类 ... -
ExtJs 控制复选框disabled
2012-04-13 14:12 2926var csm2 = new Ext.grid.Checkbo ... -
JS 四舍五入
2012-04-10 23:36 955写法巨强的四舍五入的转换函数,如下: function ro ... -
Ext el属性
2012-04-10 23:08 878这个是你要将你的组件渲染到哪个div 比如有个<div ... -
getOutputStream() has already been called for this response
2012-04-06 17:33 978getOutputStream() has al ... -
修改TOMCAT(5.5版本前)内存的方法
2012-03-30 11:34 1099Tomcat默认可以使用的内 ... -
oracle 常用sql
2012-03-27 10:49 849--创建用户 CREATE USER &q ... -
两台windows服务器----SVN的迁移
2012-03-26 17:27 1154两台服务器,进行SVN的迁移: 系统平台:windows se ... -
hibernate 延迟加载
2012-03-23 18:06 780延迟加载机制是为了避 ... -
分享一个ldap验证链接的方法
2012-03-22 12:07 1137public String auth(String userN ... -
poi 操作excel
2012-03-19 21:52 1167本篇面向对象为Java的初 ... -
oracle 复制表
2012-03-15 11:47 11261.不同用户之间的表数 ... -
Oracle Minus关键字
2012-03-06 15:56 1142//--一句话 去同存异,留第一个sql里面的结果。 //创建 ...
相关推荐
**原理**:利用Oracle提供的闪回方法,在删除数据之后还未执行大量其他操作的情况下,可以通过闪回的方式直接找回被删除的数据。 **步骤**: 1. **确定删除数据的时间**:需要知道数据被删除的具体时间点。 2. **...
在Oracle数据库环境中,误删除数据是一个常见的问题,但幸运的是,通过合理的恢复策略和技术手段,我们通常能够找回这些被删除的数据。以下将详细介绍如何在Oracle环境下执行数据恢复操作,包括理解Oracle的时间戳...
如果在删除数据后还没有进行大量的操作(只要保证被删除数据的块没有被覆写),就可以利用闪回方式直接找回删除的数据。 首先,需要确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)。...
### 重新找回更新的数据表或删除的存储过程方法 在Oracle数据库管理中,有时我们可能会误删数据表或存储过程,或者对它们进行了错误的更新操作。这些情况往往会导致数据丢失或业务流程中断,给企业的正常运营带来极...
Oracle 闪回技术是Oracle数据库提供的一个强大的恢复机制,它允许数据库管理员在出现逻辑错误时,迅速恢复到错误发生前的状态,最小化数据损失。闪回技术主要包括闪回查询、闪回事务、闪回表、闪回数据库等,可以在...
请注意,这仅在`ALTER DATABASE ENABLE FLASHBACK ARCHIVE`已执行且未达到闪回日志空间限制的情况下有效。 **3. 无闪回表时的其他恢复方法** - **时间点恢复(Point-in-Time Recovery, PITR)**:如果数据库配置了...
通过使用闪回查询,DBA可以在短时间内找到并恢复已被删除的数据行,极大地简化了数据恢复的过程。 此外,Oracle 10g的“资源回收站”对于管理空间也很有帮助。如果你确定不再需要某个表,可以使用DROP TABLE PURGE...
在Oracle数据库中,数据的删除并不意味着立即永久丢失,尤其是当你使用`DELETE`语句删除数据后,只要没有进行大量的后续操作,就有可能通过特定的恢复机制找回已删除的表或数据。本篇文章将详细解释如何在Oracle 10g...
接着,他们获取了当前 SCN,并通过闪回查询找到了未删除数据的 SCN(10670000)。最后,他们将 SCN 为 10670000 时的数据插入到 "t1" 表中,成功恢复了数据。 类似地,对于另一篇文章中的情况,作者将删除时间转换...
4. **操作系统文件恢复**:在某些情况下,如果数据文件没有被覆盖,可能可以通过操作系统级别的文件恢复工具找回。但这通常需要专业知识,并且成功率不能保证。 5. **第三方工具**:市场上有一些专门的数据库恢复...
7. **闪回丢弃(Flashback Drop)**:类似于操作系统中的“回收站”,被DROP的表或索引可以在闪回丢弃中找回,前提是撤销数据未被清除。 在使用闪回技术时,需要确保有足够的存储空间来保存闪回日志,并且要合理...
这种功能依赖于撤销数据,使得意外删除的对象有机会被找回。 **闪回版本查询** 允许用户查看特定表在某一时间段内的所有修改记录,这在追踪数据变化历史时非常有用。同样,它基于撤销数据来实现。 **闪回事务查询*...
利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
Oracle 闪回(Flashback)技术是Oracle数据库提供的一种强大工具,主要用于数据恢复和时间点一致性查询。这一技术的核心在于Undo Segment,它记录了数据库中事务的撤销信息。Oracle 10g引入了多种闪回功能,包括...
1. **闪回限制**:闪回操作依赖于Undo数据的保留时间,如果Undo数据被覆盖,则无法执行闪回。 2. **性能影响**:频繁的闪回操作可能会对数据库性能造成影响,因为它们涉及到大量的磁盘I/O操作。 3. **空间管理**:...
在本套Oracle 11g的视频教程中,我们将深入探讨Oracle数据库的闪回技术,这是一个强大的工具,用于恢复和管理数据库中的数据。闪回技术是Oracle数据库的一个关键特性,它允许用户“时光倒流”,回溯到数据库的某个...
flashback drop是指Oracle提供的闪回技术中的一种,它允许用户通过闪回查询功能将被删除的对象从回收站中恢复。这个功能使得在误删除对象后能够迅速而准确地恢复数据,缩短了数据恢复的时间,减少了数据丢失的风险...
9. **安全恢复**:在恢复过程中,软件可能不会对原硬盘造成任何额外损害,以保护已存在的数据不被破坏。 10. **技术支持与服务**:提供及时的技术支持和客户服务,解答用户在使用过程中的疑问和问题。 以上是对"闪...
- **闪回表**: 当整个表被误删除时,可以通过`FLASHBACK TABLE`命令恢复到删除前的状态。首先需要知道被删除表的名称。例如: ```sql FLASHBACK TABLE 表名 TO BEFORE DROP; ``` 这条命令将把表恢复到最后一次...