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 老师的笔记。
Flashback Database 闪回数据库的更多相关文章
- Oracle Flashback Technologies - 闪回数据库
Oracle Flashback Technologies - 闪回数据库 根据指定的SCN,使用rman闪回数据库 #查看可以闪回到多久前 SQL> select * from v$flash ...
- oracle数据库flashback系列--闪回数据库在dataguard中的使用
很多人在学习flashback database这个oracle技术的时候,都会有一个疑问,就是如果我只有一个数据库作为生产库的话,是否有这样的业务需求导致我们要把数据库闪回到以前的时间点?以及这样做 ...
- 【DG】利用闪回数据库(flashback)修复Failover后的DG环境
利用闪回数据库(flashback)修复Failover后的DG环境 1.1 BLOG文档结构图 1.2 前言部分 1.2.1 导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...
- [Flashback]开启数据库闪回数据库功能
Flashback是Oracle中一个重要的功能,想要使用闪回数据库功能,需要将数据库置于闪回数据库的状态. 1.检查数据库是否开启归档状态 SQL> archive log list; Dat ...
- Flasback数据库(闪回数据库)
数据库闪回原理: 一旦启用了闪回数据库,修改的块映像会不时从数据库缓冲区复制到闪回缓冲区.通过新的后台恢复写入器(Recovery Writer, RVWR)将此闪回缓冲区内容刷新到磁盘和闪回日志接着 ...
- OCP读书笔记(12) - 执行闪回数据库
闪回数据库使用的是闪回日志,闪回日志存在于闪回目录(也就是快速闪回区中)闪回日志:就是数据块修改之前的镜像,简称前像 1.查看闪回目录的位置:show parameter recovery 如果闪回目 ...
- oracle闪回技术总结之闪回数据库
[实施步骤] 步骤一.设置如下的初始化参数: Sql>小时:以分钟为单位 SQL> 点00分左右发现表被删除 切了几个归档 22:00:38SQL>:06:05 SQL> :0 ...
- Oracle 12c 新特性之 PDB 级别闪回数据库
在Oracle Database 12.1中,闪回数据库操作仅限于 CDB ,Oracle Database 12.2支持 CDB 与 PDB 数据库的闪回. PDB 的还原点种类:1. normal ...
- flashback query闪回数据
误删除了部分重要数据,已提交,需要恢复.首先尝试flashback query闪回数据. 数据库运行在归档模式,首先确认数据库的SCN的变化: SQL> col fscn for 9999999 ...
随机推荐
- 在dev目录创建一个字符设备驱动的流程
1.struct file_operations 字符设备文件接口 1: static int mpu_open(struct inode *inode, struct file *file) 2: ...
- Codeforces 309C Memory for Arrays 二进制模拟进位
题目链接:点击打开链接 题意: 给定n个箱子m个物品 以下n个数字表示箱子的容量 以下m个数字b1-bm 表示物品体积为2^bi大 问最多有多少个物品能够放入箱子. 思路: 贪心,先放小的,小的不能放 ...
- 【WPF学习笔记】之如何把数据库里的值读取出来然后显示在页面上:动画系列之(六)(评论处有学习资料及源码)
(应博友们的需要,在文章评论处有源码链接地址,以及WPF学习资料.工具等,希望对大家有所帮助) ...... 承接系列五 上一节讲了,已经把数据保存到数据库并且删除数据,本讲是把已经存在的数据从数据库 ...
- Java提高(二)---- HashTable
阅读博客 java提高篇(二五)—–HashTable 这篇博客由chenssy 发表与2014年4月,基于源码是jdk1.7 ========================== 本文针对jdk1. ...
- insert小细节,大问题
今天现场报流程无法查看,已查看流程表中没有数据了.昨天有运行过删除垃圾数据的脚步.大致过程是: create table bak_test a as select * from test; creat ...
- ASP.NET动态网站制作(7)-- JS(2)
前言:这节课是JS的第二节课,主要是JS中的控制语句. 内容: 1.条件语句: (1)比较操作符:==,!=,>,>=,<,<=.字符串大小写转换:toUpperCase() ...
- iOS项目 -- 模仿花椒直播做的第三层设计完整版
由于是获取第三方的数据,开发的时候,把数据结构分为:闭环数据,和开环数据. 开环数据是网络的第三方数据,自己不能控制的了. 闭环数据是自己的数据,可以进行各式各样的设计. 这是闭环数据的数据库关键字设 ...
- 怎么查看自己的IP地址?
https://jingyan.baidu.com/article/63f2362816d56c0208ab3dd5.html 1.通过自己的电脑查看的是内部局域网的IP地址 2.通过网上查看的IP地 ...
- windows系统下nodejs、npm、express的下载和安装教程——2016.11.09
1. node.js下载 首先进入http://nodejs.org/dist/,这里面的版本呢,几乎每个月都出几个新的,建议大家下载最新版本,看看自己的电脑是多少位的,别下错了. 下载完解压到你想放 ...
- 【题解】[CF718C Sasha and Array]
[题解]CF718C Sasha and Array 对于我这种喜欢写结构体封装起来的选手这道题真是太对胃了\(hhh\) 一句话题解:直接开一颗线段树的矩阵然后暴力维护还要卡卡常数 我们来把\(2 ...