闪回数据库(Flashback Database)

 Flashback Database闪回数据库
  使用闪回数据库可以将数据库快速的闪回到过去某个时间点。在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过程速度比较传统的还原恢复通常快很多。
  启动闪回数据库时,会将前映像数据保存在“闪回缓冲区”中,然后由恢复写入器(Recovery Writer,RVWR)后台进程,将闪回缓冲区的前映像数据保存在闪回恢复区的闪回数据库日志中。
  配置闪回数据库相关参数:
  db_recovery_file_dest 决定闪回恢复区路径
  db_recovery_file_dest_size 决定闪回恢复区大小
  db_flashback_retention_target 保留恢复最近多长时间的数据,单位为分钟。
  闪回数据库必须在归档模式下
  开启归档
  1、SQL> alter system set log_archive_dest_1='location=+oradg/b1/recovery/' scope=both;
  2、SQL> shutdown immediate
  3、SQL> startup mount
  4、SQL> alter database archivelog;
  5、SQL> alter database open;
  6、SQL> archive log list
  设置闪回区大小,路径,闪回保留时间
SQL> alter system set db_recovery_file_dest_size=5G;
System altered.
SQL> alter system set db_recovery_file_dest='+ORADG';
System altered.
SQL> alter system set db_flashback_retention_target=2880;
System altered.
开启闪回功能
SQL> startup mount exclusive
SQL> alter database flashback on;
Database altered.
SQL> select flashback_on from v$database;

FLASHBACK_ON

YES
  关闭闪回功能
SQL> startup mount exclusive
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
SQL> ?alter database flashback off;
Database altered.
SQL> alter database open ;
Database altered.
SQL> alter system set db_recovery_file_dest='';
System altered.

闪回数据库的步骤
  1、关闭数据库
  2、启动数据库到mount状态[exclusive模式]
  3、闪回至某个时间点,SCN或还原点
  4、使用resetlogs打开数据库
  闪回数据库的方法
  1、sqlplus下基于SCN闪回
  FLASHBACK DATABASE [] TO SCN
  2、sqlplus下基于时间戳闪回
  FLASHBACK DATABASE [] TO TIMESTMP
  3、sqlplus下基于还原点闪回
  FLASHBACK DATABASE [] TO RESTORE POINT
  4、RMAN下基于时间戳闪回
  RMAN> FLASHBACK DATABASE TO TIME = "TO_DATE('2013-10-10 19:25:21','YYYY-MM-DD HH24:MI:SS')";
  5、RMAN下基于SCN闪回
  RMAN> FLASHBACK DATABASE TO SCN=1121679;
  6、RMAN下基于:归档序号
  RMAN> FLASHBACK DATABASE TO SEQUENCE=56 THREAD=1;
  运用闪回功能示例:
  示例1:删除表的部分数据后,使用闪回数据库的方法恢复
SQL> create table test_flashback as select * from emp; --创建表
Table created.
SQL> select dbms_flashback.get_system_change_number from dual; --记录删除数据前scn

GET_SYSTEM_CHANGE_NUMBER

1069396
SQL> delete from test_flashback where deptno=20; --删除数据
5 rows deleted.
SQL> commit;
Commit complete.
SQL> startup mount exclusive --启动到mount exclusive状态
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
SQL> flashback database to scn 1069396; --闪回到删除数据之前,还可以用时间戳闪回如:
Flashback complete. --flashback database to to_timestamp('2013-10-8 18:02:34','YYYY-MM-DD HH24:MI:SS')
SQL> alter database open read only; ?--以read only 方式打开检查数据库是否闪回成功,如不成功考虑其他形式的闪回
Database altered.
SQL> select * from scott.test_flashback where deptno=20;
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO



7369 SMITH CLERK 7902 17-DEC-80 800 20
7566 JONES MANAGER 7839 02-APR-81 2975 20
7788 SCOTT ANALYST 7566 19-APR-87 3000 20
7876 ADAMS CLERK 7788 23-MAY-87 1100 20
7902 FORD ANALYST 7566 03-DEC-81 3000 20
SQL> startup
ORACLE instance started.
Total System Global Area 839282688 bytes
Fixed Size 2217992 bytes
Variable Size 557844472 bytes
Database Buffers 276824064 bytes
Redo Buffers 2396160 bytes
Database mounted.
ORA-01589: must use RESETLOGS or NORESETLOGS option for database open
SQL> alter database open resetlogs;
Database altered.
  --闪回数据库之后,最后做一次全备

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-21 11:51:06

闪回数据库(Flashback Database)的相关文章

Oracle 闪回特性(FLASHBACK DATABASE)

--===================================== -- Oracle 闪回特性(FLASHBACK DATABASE) --=====================================       闪回技术通常用于快速简单恢复数据库中出现的认为误操作等逻辑错误,从闪回的方式可以分为基于数据库级别闪回.表级别闪回.事务 级别闪回,根据闪回对数据的影响程度又可以分为闪回恢复,闪回查询.闪回恢复将修改数据,闪回点之后的数据将全部丢失.而闪回查询则可 以查询数

Oracle 闪回特性(Flashback Query、Flashback Table)

--================================================== -- Oracle 闪回特性(Flashback Query.Flashback Table) --==================================================       Oracle 闪回查询是指针对特定的表来查询特定的时间段内的数据变化情况来确定是否将表闪回到某一个特定的时刻以保证数据无讹误存在. 这个特性大大的减少了采用时点恢复所需的工作量以及

Oracle 闪回特性(Flashback Version、Flashback Transaction)

--========================================================== -- Oracle 闪回特性(Flashback Version.Flashback Transaction) --==========================================================         Oracle闪回特性为数据的快速回复某一对象的特定数据提供了更多的便利.前面介绍了闪回的几种特性,包括flashback dat

【DG】利用闪回数据库(flashback)修复Failover后的DG环境

利用闪回数据库(flashback)修复Failover后的DG环境   1.1  BLOG文档结构图       1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① Failover后DG环境的恢复方法(重点) ② DG的基本维护操作 ③ GC客户端软件的安装 ④ 利用GC快速搭建一套DG环境 ⑤ Failover和Switchover的区别 ⑥ 其它维护操作   Tips: ① 本文

Oracle RAC 执行闪回数据库操作

[oracle@zhongwc1 ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.3.0 Production on Wed Jan 23 17:02:01 2013 Copyright (c) 1982, 2011, Oracle. All rights reserved. Connected to: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Produc

Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN)

--============================================== -- Oracle 闪回特性(FLASHBACK DROP & RECYCLEBIN) --==============================================       FLASHBACK DROP 特性允许在不丢失任何数据库的情况下将指定的表恢复至其被删除的时间点,并保持数据库为当前状态.闪回删除并不是 真正的删除表,而是把该表重命名并放入回收站,类似于Windows的

巧用闪回数据库来查看历史数据

国庆期间有一个例行维护的任务,需要在大早上7点起来,先根据业务指定的SQL查出指定数据,然后运行一个存储过程来更新数据. 查出来的这部分数据需要作为后期的数据稽核所用,涉及到审计,所以优先级还是比较高的. 因为这样的查询有几个,所以为了统一数据格式,先加了rownum看看数据的基本情况. SQL类似于下面的形式: select cn 账号,present_point 剩余积分点 , last_date 积分最后更新时间 from test.user_present_point_sp  where

闪回数据库不是“万金油”(r11笔记第73天)

    闪回数据库这个特性在很多Oracle DBA眼里就是鸡肋特性,因为谁会因为恢复数据而需要在主库闪回,最后可能丢掉更多的数据,这个观点没错.     但是如果是备库呢,这个特性就顺利成章的满足了绝大多数的恢复需求,无论你是truncate,还是一些drop table的操作都是可以轻而易举的恢复.所以更多的时候我们其实更偏爱于Data Guard基础上的这种数据恢复方式,而原本的逻辑备份exp,expdp,物理备份RMAN就显得有些臃肿了.      拿一个真实的小案例来说明,有一次因为数

Oracle学习(二十三) 闪回操作(flashback)

Oracle的闪回功能可以在对数据库进行不完全恢复的情况下,对某一个指定的表进行恢复.闪回数据 库是进行时间点恢复的新方法,它能够快速将Oracle恢复到以前的时间,以更正由于逻辑数据损坏或用 户错误而引起的问题.当需要恢复时,可以将数据库恢复到错误前的时间点,并且只恢复改变的数据块 . Oracle中的闪回操作包括以下4种: (1)查询闪回:查询过去某个指定时间.指定实体的数据,恢复错误的数据库更新.删除等. (2)表闪回:使表返回到过去的某一时间的状态,恢复表.取消对表进行的修改. (3)删