Flashback Database 闪回数据库

一、  Flashback Database 说明

Flashback Database 功能非常类似与 RMAN 的不完全恢复, 它可以把整个
数据库回退到过去的某个时点的状态, 这个功能依赖于 Flashback log 日志。 比
RMAN 更快速和高效。 因此 Flashback Database 可以看作是不完全恢复的替代
技术。 但它也有某些限制:
(1)Flashback Database 不能解决 Media Failure, 这种错误 RMAN 恢复仍
是唯一选择。
(2)如果删除了数据文件或者利用 Shrink 技术缩小数据文件大小,这时不
能用 Flashback Database 技术回退到改变之前的状态,这时候就必须先利用
RMAN 把删除之前或者缩小之前的文件备份 restore 出来, 然后利用 Flashback
Database 执行剩下的 Flashback Datbase。
(3)如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不
能使用 Flashback Database。
(4)使用 Flashback Database 锁能恢复到的最早的 SCN, 取决与 Flashback Log 中记录的最早 SCN。

二、  Flashback Database  架构

Flashback Database 整个架构包括一个进程Recover Writer(RVWR)后台进程,
Flashback Database Log 日志 和 Flash Recovery Area。一旦数据库启用了
Flashback Database, 则 RVWR 进程会启动,该进程会向 Flash Recovery Area 中
写入 Flashback Database Log, 这些日志包括的是数据块的 " 前镜像(before
image)", 这也是 Flashback Database 技术不完全恢复块的原因。

三、 Flashback Database  操作流程:

1. 配置 Flash Recovery Area
SQL> show parameter db_recovery_file
SQL> alter system set db_recovery_file_dest_size=10G scope=both;

2. 数据库必须已经处于归档模式
SQL> archive log list;

3. mount 状态下 开启 flashback database
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback on;
SQL> alter database open;
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
YES

4.查询当前的 scn
SQL> SELECT CURRENT_SCN FROM V$DATABASE;

CURRENT_SCN
-----------
    3450135

5.  查询当前的时间
SQL> select to_char(sysdate,‘yy-mm-dd hh24:mi:ss‘) time from dual;

TIME
-----------------
15-03-12 16:40:55

6. 模拟业务操作
SQL> create table flashback as select * from dba_objects;

Table created.

SQL> commit;

Commit complete.

7.  重启 DB 到 到 mount
SQL> shutdown immediate
SQL> startup mount

8.  执行恢复:分 timestamp  或者 SCN 
SQL> flashback database to scn 3450135;

Flashback complete.

或者 (两者选其一)
SQL> Flashback database to timestamp to_timestamp(‘15-03-12 16:40:55‘,‘yy-mm-ddhh24:mi:ss‘);

9. 打开数据库
SQL> alter database open resetlogs;

说明:
在执行完 flashback database 命令之后,oracle 提供了两种方式让你修复数据库:
1). 直接 alter database open resetlogs 打开数据库,当然,指定 scn 或者
timestamp 时间点之后产生的数据统统丢失。
2). 先执行 alter database open read only 命令,以 read-only 模式打开数据库,
然后立刻通过逻辑导出的方式将误操作涉及表的数据导出,再执行 recover
database 命令以重新应用数据库产生的 redo,将数据库修复到 flashback database
操作前的状态,然后再通过逻辑导入的方式,将之前误操作的表重新导入,这样
的话对现有数据的影响最小,不会有数据丢失。

10. 核查闪回操作是否成功
SQL> select * from flashback;
select * from flashback
              *
ERROR at line 1:
ORA-00942: table or view does not exist

11. 关闭闪回数据库功能
SQL> shutdown immediate;
SQL> startup mount;
SQL> alter database flashback off;
SQL> alter database open;
SQL> select flashback_on from v$database;

FLASHBACK_ON
------------------
NO

补充:
-- 查看是否启用了 Flashback database 功能
SQL> select flashback_on from v$database;

-- 查看闪回支持的闪回时间
SQL> select oldest_flashback_scn os, to_char(oldest_flashback_time,‘yy-mm-dd hh24:mi:ss‘) ot, 
retention_target rt,flashback_size fs, estimated_flashback_size es
from v$flashback_database_log;

Flashback Database 所能回退到的最早时间,取决与保留的 Flashback
Database Log 的多少, 该视图就可以查看许多有用的信息。
Oldest_flashback_scn / Oldest_flashback_time : 这两列用来记录可以恢复到最早的时点
Flashback_size: 记录了当前使用的 Flash Recovery Area 空间的大小
Retention_target: 系统定义的策略
Estimated_flashback_size: 根据策略对需要的空间大小的估计值

--查看闪回数据库的活动量
SQL> alter session set nls_date_format=‘hh24:mi:ss‘;
SQL> select * from v$flashback_database_stat;

这个视图用来对 Flashback log 空间情况进行更细粒度的记录和估计。 这个
视图以小时为单位记录单位时间内数据库的活动量
Flashback_Data 代表 Flashback log 产生数量,
DB_Date 代表数据改变数量,
Redo_Date 代表日志数量,

通过这 3 个数量可以反映出数据的活动特点,更准确的预计 Flash Recovery Area 的空间需求

感谢 dave 大神 ,有参考dave 老师的笔记。

时间: 2024-11-08 20:12:14

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

Oracle Flashback Technologies - 闪回数据库

根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flashback_database_log; #查看当前的SCN SQL> select current_scn from v$database; CURRENT_SCN ----------- 1462273 SQL> #关闭数据库 $ rman target / Recovery Manager: Release 11.2.0.4.0 - Production on Tue

闪回数据库的使用

oracle闪回技术-----使用闪回日志来恢复用户的逻辑错误,这种修复只针对用户逻辑错误的恢复,而不涉及整个数据库的恢复 恢复更具有针对性而且恢复时间大大减少. 对于闪回数据库而言,闪回日志不会被归档 启用闪回数据库-----数据库处于归档模式 使用DB_RECOVERY_FILE_DEST参数指定的目录作为存储目录,该参数的值即为快速恢复区 db_flashback_retention_target,该参数的值是一个一分钟为单位的数字. 通过数据字典v$flashback_database_

Oracle10g 闪回数据库 (Flashback Database)

生产上要做灾备系统的应急切换演练,灾备端是由OGG搭建的.由于生产库都比较大10多T,不想演练后重新初始化灾备库,生产库版本为10.2.0.4,于是想到10g的新特性flashback database.演练开始前记录一个还原点,演练结束后闪回到这个还原点,重新同步ogg即可. 测试闪加数据库. 一.开启FLASHBACK DATABASE 数据库版本:10.2.0.4 启用FLASHBACK DATABASE数据库必须为ARCHIVELOG模式,还需要有一个闪回恢复区用于存储闪回日志,RAC中

【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的区别 ⑥ 其它维护操作 1.3  本文简介 10月23和24日考

11G 闪回数据库

第一种场景 库是用来培训或测试环境的,测试完毕后恢复原来的样子 [email protected] odb>archive log list; Databaselog mode            No Archive Mode Automaticarchival             Disabled Archivedestination           USE_DB_RECOVERY_FILE_DEST Oldestonline log sequence      220 Curre

[转]Oracle DB执行闪回数据库

? 配置闪回数据库 ? 执行闪回数据库操作 ? 监视闪回数据库 闪回数据库 闪回数据库操作: ? 作用类似于数据库的倒带按钮 ? 可以在用户造成了逻辑数据损坏的情况下使用 闪回数据库 使用闪回数据库,通过还原自先前某个时间点以来发生的所有更改,可快速将数据库恢复到那个时间的状态.因为不需要还原备份,所以此操作速度很快.可以使用此功能还原导致逻辑数据损坏的更改. 使用闪回数据库时,Oracle DB 可使用过去的块映像回退对数据库的更改.在正常数据库操作期间,Oracle DB 会不定期地将这些块

实验-闪回数据库

一.打开闪回数据库 1.确保数据库处于归档模式,如果为非归档模式,将数据库转换成归档模式 SQL> select name,log_mode from v$database; NAME LOG_MODE --------- ------------ ORCL NOARCHIVELOG SQL> select flashback_on from v$database; FLASHBACK_ON ------- NO 设置为归档模 Connected to Oracle Database 10g

flashbackup闪回数据库

某时间删除了一个表 SQL> delete test1; 50000 rows deleted. 1.关闭数据库,启动到mount状态(abort数据库能快速关闭,但是可能会丢数据) SQL> shutdown abort; ORACLE instance shut down. SQL> startup mount; 2.基于时间戳闪回数据库(20:55) SQL> flashback database to timestamp to_timestamp('2015-09-22 2

闪回数据库

Flashbacking a database means going back to a previous database state.闪回数据库到之前数据库的状态 The Flashback Database feature provides a way to quickly revert entire Oracle database to the state it was in at a past point in time. 闪回数据库特性提供了一种快速恢复数据库到过去一个时间点的方法