`

oracle flashback 闪回

阅读更多

 

1、必须设定undo保留时间足够大以能够重构需要闪回的数据

ALTER SYSTEM SET UNDO_RETENTION=<SECONDS>; seconds值是undo数据保持的秒数。

Flashback view是由undo retention interval来限制的。

 关于UNDO_RETENTION 资料可以参考:

http://blog.csdn.net/seagal890/archive/2008/10/09/3044226.aspx


2、包DBMS_FLASHBACK提供了需求接口
call dbms_flashback.enable_at_time(‘2010-10-19:11:00:00’);
call dbms_flashback.disable();
-------------------------------------
enable_at_time:会话级的enable flashback,映像时间被设定为最接近指定时间戳的scn
enable_at_system_change_number:将数据库闪回到指定的scn号。
get_system_change_number:返回当前的scn。
disable:这个存储过程允许我们在整个会话内停止flashback并将你带回当前时间的数据状态。

----------
dbms_flashback.enable存储过程不可以在有活动事务的时候执行,并且,这个包不能用sys身份执行。
在使用DBMS_FLASHBACK.ENABLE_AT_TIME前,你必须设定你的NLS_DATE_FORMAT的精确程度,Oracle默认的是精确到天

 

3、timestamp 与scn(系统改变号) 的对应关系
事实上,Oracle在内部都是使用scn,即使你指定的是as of timestamp,oracle也会将其转换成scn,系统时间标记与scn之间存在一张表,即SYS下的SMON_SCN_TIME表。

 

每隔5分钟,系统产生一次系统时间标记与scn的匹配并存入sys.smon_scn_time表,该表中记录了最近1440个系统时间标记与scn的匹配记录,由于该表只维护了最近的1440条记录,因此如果使用as of timestamp的方式则只能flashback最近5天内的数据(假设系统是在持续不断运行并无中断或关机重启之类操作的话)。SYS.SMON_SCN_TIME最多拥有1440条记录。这个最大记录数是这样计算出来的,ORACLE平均每5分钟同步一次该表数据,最大保存最近5天的记录,因此就相当于12(每小时更新次数)*24*5=1440。

 

可以用sql验证一下:

 

select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time; 
 

10g中提供了两个函数scn_to_timestamp() timestamp_to_scn() 用来执行时间戳和SCN的转换。

 

下面使用闪回进行演示一下:

  
1、登陆到数据库。

C:\>sqlplus tivan/tivan
SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 10月 19 22:24:03 2010
Copyright (c) 1982, 2005, Oracle.  All rights reserved.
连接到:                                                                                               
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production      
With the Partitioning, OLAP and Data Mining options                                 
 

2、查看表的记录。

SQL> select count(*) from t1
  2  ;
COUNT(*)                         
----------                             
      8302                            
 

3、删除所有的记录提交。

SQL> delete from t1         
  2  ;
已删除8302行。
SQL> commit;
提交完成。
 

4、获得当前SCN
如果能够确切知道删除之前SCN最好,如果不知道,可以进行闪回查询尝试。

SQL> select dbms_flashback.get_system_change_number from dual;
GET_SYSTEM_CHANGE_NUMBER
------------------------
                 1482649
SQL> select count(*) from t1 as of scn 1482600;
  COUNT(*)
----------
      8302

 

SCN=1482600时,t1表中的所有记录都还在。

 

5、利用闪回恢复数据。

查看验证一下:

SQL> insert into t1 select * from t1 as of scn 1482600;
已创建8302行。
SQL> commit;
提交完成。
 

结果OK

 

或者还可以如下操作

SQL>flashback table t1 to scn 1482600;
SQL> commit;                                    
Commit complete.
--对于drop table t1 的操作flashback
SQL> drop table t1;
SQL>COMMIT;
SQL> flashback table t1to before drop;  
SQL>commit;                                     
 

对于怎么取的SCN可以使用timestamp_to_scn() 函数,如:

select timestamp_to_scn(to_timestamp('2010-10-19 21:00:00','YYYY-MM-DD HH:MI:SS')) from dual; 

 

-EOF-

 

 

1
0
分享到:
评论

相关推荐

    oracle中关于flashback闪回的介绍

    通过上述介绍,我们可以看到Oracle的Flashback闪回技术为数据恢复提供了一种灵活高效的方法。正确设置undo保留时间和合理使用DBMS_FLASHBACK包可以帮助我们更好地管理和恢复数据。同时,理解和掌握timestamp与SCN...

    oracle flashback闪回技术

    Oracle Flashback技术是数据库管理系统中的一种高级特性,它允许用户恢复到数据库的某个历史状态,无需进行复杂的备份和恢复操作。这项技术主要基于事务日志和快照来实现,为数据库管理员提供了极大的便利,尤其在...

    Oracle_FlashBack闪回技术

    ### Oracle FlashBack 闪回技术详解 #### 一、引言 在Oracle数据库管理中,闪回技术(FlashBack)是一项极为重要的功能,它能够帮助数据库管理员恢复误操作或者数据丢失的情况,为数据的安全性和可靠性提供了强有力...

    ORACLE flashback database测试

    ORACLE flashback database测试,主要进行ORACLE flashbackup 闪回整个数据库的实现。

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

    "Oracle 闪回(Flashback)技术" Oracle 闪回(Flashback)技术是 Oracle 数据库提供的一系列人为错误更正技术,用于快速恢复逻辑误操作。闪回技术从 Oracle 9i 版本开始,逐步发展到 Oracle 11g 版本,成为数据库...

    oracle flashback特性(闪回语句,闪回表,闪回数据库).doc

    Flashback Query 是 Oracle Flashback 特性中最基本的部分,它允许用户通过闪回查询来查看过去的数据状态。Flashback Query 通过使用多版本读一致性的 undo 表空间来读取操作前的记录数据。Flashback Query 有多种...

    Oracle Flashback技术

    在使用Oracle Flashback技术时,RMAN可以帮助我们执行闪回数据库、闪回数据归档等高级操作。例如,`RESTORE`和`RECOVER`命令可以用于恢复备份的数据文件,而`FLASHBACK DATABASE`则可以恢复到特定的时间点。 通过...

    ORACLE FLASHBACK综述.pdf

    Oracle Flashback 的功能始于 Oracle 9i 版本,最初的功能是局限于自动撤销管理 (AUM) 的闪回查询,不能完成整个数据库的闪回。到了 Oracle 10g 版本,Flashback 的功能得到了极大的改进,不再局限于 AUM 的闪回查询...

    flashback闪回技术

    ### Flashback闪回技术 #### 一、概述 Flashback技术是Oracle数据库中一项重要的数据恢复工具,它基于Undo Segment中的内容实现,并受到UNDO_RETENTION参数的影响。要使用这项特性,用户必须启用自动撤销管理表...

    Oracle 闪回特性 FLASHBACK &amp; RECYCLEBIN

    Oracle 闪回特性 FLASHBACK & RECYCLEBIN Flashback 系列是 Oracle 数据库中的一组功能强大且实用的闪回机制,旨在帮助数据库管理员和开发者快速恢复数据库中的各种对象,包括表、数据、事务等。Flashback 系列的...

    Oracle RAC环境下开启FLASHBACK闪回功能.pdf

    在Oracle RAC(Real Application Clusters)环境下启用Flashback闪回功能是一项高级的数据库管理技术,它能够帮助数据库管理员在不丢失数据的情况下恢复到过去某一时间点的状态,这对于数据安全和灾难恢复至关重要。...

    oracle 闪回 flashback

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

    用oracle10g的flashback闪回功能快速恢复oracle中被删除的表

    ### 使用Oracle 10g的Flashback闪回功能快速恢复被删除的表 #### Oracle 10g Flashback 特性概述 Oracle Database 10g 引入了一项非常强大的特性——Flashback,该特性使得数据库管理员(DBA)能够轻松地恢复误删除...

    Oracle中有后悔药卖吗?Oracle中的回闪查询: Oracle 10g 回闪实验文档

    除了数据库级别的回闪外,Oracle 10g还支持表级别的回闪——**Oracle Flashback Table**。通过此功能,可以将单个表恢复到过去某个特定时间点的状态。这对于因误删除或更新数据而导致的问题非常有用。 ```sql -- 将...

    Oracle闪回技术详解

    Oracle 闪回技术详解 Oracle闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复。闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误...

    Oracle闪回特性

    Oracle闪回特性是Oracle数据库提供的一种强大的数据恢复和时间旅行功能,它允许用户查看和恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一特性在故障排查、误操作恢复以及历史数据分析等方面有着...

    oracle闪回技术

    Oracle 闪回技术是Oracle数据库提供的一种强大的数据恢复机制,它允许用户恢复到数据库的某个历史状态,而无需依赖传统的备份和恢复过程。这一技术基于Oracle的多版本并发控制(MVCC)机制,使得数据库能够记录和...

    oracle_闪回15分钟前的数据操作写法

    Oracle闪回技术主要包括以下几种类型:闪回查询(Flashback Query)、闪回表(Flashback Table)、闪回事务查询(Flashback Transaction Query)、闪回数据库(Flashback Database)和闪回删除(Flashback Drop)。...

Global site tag (gtag.js) - Google Analytics