`

oracle flashback(闪回)

阅读更多
数据库很多表被误删,利用数据库的闪回进行恢复,本文大量采用网上的例子,大部分来自http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4677378.aspx
步骤:
1. 配置Flash Recovery Area

  要想使用Flashback Database, 必须使用Flash Recovery Area,因为Flashback Database Log只能保存在这里。 要配置的2个参数如下,一个是大小,一个是位置。如果数据库是RAC,flash recovery area 必须位于共享存储中。数据库必须处于archivelog 模式.

启用Flash Recovery Area:
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST_SIZE=20G SCOPE=BOTH;

SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='/DBA/FB' SCOPE=BOTH;




禁用Flash Recovery Area:
SQL>ALTER SYSTEM SET DB_RECOVERY_FILE_DEST='' ;

注意:
对于Flash Recovery Area,Oracle 是这样建议的,flash recovery area 设置的越大,flashback database 的恢复能力就越强,因此建议flash recovery area 能够放的下所有的数据文件,增量备份,以及所有尚未备份的归档文件,当然还有它自己产生的flashback logs。

在数据库运行过程中,oracle 自动向该区域写入文件,当剩余空间不足15%的时候,它就会在alert 中增加警告,提示你空间不足。但此时不会影响数据库的正常运转,直到所有空间统统被用掉之后,oracle 首先尝试删除寻些过期的文件,冗余文件或备份过的文件,如果这些做完了,还是没有空闲空间的话,数据库就被hang 住了。


对于因Flash Recovery Area导致的数据库hang的处理,请参考:

http://blog.csdn.net/tianlesoftware/archive/2009/10/14/4668991.aspx
查看是否启用:
show parameter db_recovery_file

2.检查是否启用了归档日志
SQL> archive log list;

数据库日志模式      存档模式

自动存档            启用

存档终点            USE_DB_RECOVERY_FILE_DEST

最早的联机日志序列  9

下一个存档日志序列  11

归档日志操作:
1)、开启归档
  a. 关闭数据库shutdown immediate
  b. startup mount
  c. alter database archivelog
  d. alter database open
  2)、禁止归档
  a. 关闭数据库shutdown immediate
  b. startup mount
  c. alter database noarchivelog
  d. alter database open
操作完后查看
SQL> archive log list


3.启用数据库flashback
1). 数据库启动到mount状态
SOL>shutdown immediate
SQL> startup mount;

2). 检查Flashback 功能, 缺省时功能是关闭的。

SQL> select name, current_scn, flashback_on from v$database;

NAME    CURRENT_SCN  FLASHBACK_ON

--------    -----------          ------------------

DBA      945715          NO

 

3). 启动Flashback功能

SQL>  alter database flashback on;

数据库已更改。


SQL>  select name, current_scn, flashback_on from v$database;

NAME      CURRENT_SCN FLASHBACK_ON

--------- ----------- ------------------

DBA                 0 YES


4). 设置初始化参数:DB_FLASHBACK_RETENTION_TARGET:


SQL>alter system set db_flashback_retention_target=1440 scope=both;
5)启动数据库
SQL> alter database open


该参数用来控制flashback log 数据保留的时间,或者说,你希望flashback database 能够恢复的最早的时间点。默认值是1440,单位是minute,即24 小时,需要注意的是该参数虽然未直接指定flash recovery area大小,但却受其制约,举个例子假如数据库每天有10%左右的数据变动的话,如果该初始化参数值设置为1440,则flash recovery area 的大小至少要是当前数据库实际容量的10%,如果该初始化参数设置为2880,则flash recovery area 的大小就至少是数据库所占容量的20%。

对数据进行flashback
SQL> shutdown immediate

数据库已经关闭。

已经卸载数据库。

ORACLE 例程已经关闭。

SQL> startup mount

ORACLE 例程已经启动。




SELECT CURRENT_SCN FROM V$DATABASE;
560586

进行闪回:
Flashback database ryctest to timestamp to_timestamp('2011-05-10 13:40:05','yyyy-mm-dd hh24:mi:ss');
或者:
Flashback database to scn 947921;
启动数据库
alter database open resetlogs;

Flashback 不支持sys用户. system表空间下的对象,也不能从回收站里拿到。故使用SYS 或者SYSTEM用户登陆时, show recyclebin 为空。
某个表被drop
1. Tablespace Recycle Bin

从Oracle 10g 开始, 每个表空间都会有一个叫作回收站的逻辑区域,当用户执行drop命令时, 被删除的表和表的关联对象( 包括索引, 约束,触发器,LOB段,LOB index 段) 不会被物理删除, 这些对象先转移到回收站中,这就给用户提供了一个恢复的可能。


初始化参数recyclebin 用于控制是否启用recyclebin功能,缺省是ON, 可以使用OFF关闭。

SQL> show parameter recycle

NAME                    TYPE        VALUE
------------------------------------ ----------- ------------------------------
buffer_pool_recycle            string
db_recycle_cache_size         big integer 0
recyclebin                    string      on

禁用该功能:
SQL> alter system set recyclebin=off;
SQL> alter system set recyclebin=on;

SQL> alter session set recyclebin=off;
SQL> alter session set recyclebin=on;

某个表被drop后,
1.	show recyclebin
2.	flashback table a to before drop;
Flashback query
Insert into A select * from A as of timestamp to_timestamp('2009-10-15 19:04:16','YYYY-MM-DD hh24:mi:ss');

或者
insert into A select * from A as of scn 1095782;


分享到:
评论

相关推荐

    oracle flashback闪回技术

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

    Oracle_FlashBack闪回技术

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

    oracle中关于flashback闪回的介绍

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

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

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

    ORACLE flashback database测试

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

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

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

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

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

    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 & RECYCLEBIN

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