本章内容:


1.Understanding Flashback Database, Restore Points and Guaranteed Restore Points  熟悉flashbackup、还原点
数据库闪回和还原点能让数据库回到过去的某个时间,从而解决逻辑错误,比基于时间点的表空间恢复(TSPITR)要高效的多,不需要使用备份文件进行还原。功能上类型于TSPITR,还能在数据库升级(闪回到升级前)、以及创建DG失败后恢复主库时使用。

还原点(Restore Points)与数据库闪回配合使用。还原点对应于一个SCN,可以将数据库闪回到此SCN。

可以用RMAN执行flashback命令或者在sqlplus中执行flashback命令:
FLASHBACK DATABASE TO RESTORE POINT 'before_upgrade';
FLASHBACK DATABASE TO SCN 202381;

1) 数据库闪回(Flashback Database)
数据库闪回可以让数据库还原到过去的某个时间点,但是却不用以resetlogs的方式打开数据库。数据库闪回使用闪回日志,闪回日志放在fast recovery area 中。为了使用闪回功能,首先要开启闪回日志。
闪回的原理:从开启闪回日志起,数据库每隔一段时间就把修改过的数据库写到闪回日志里。当进行闪回时,从目标SCN开始,将该SCN之前的数据块写到数据文件,进行然后使用redo log和归档日志进行恢复目标SCN。(原文是:When you use Flashback Database to rewind a database to a past target time, the command determines which blocks changed after the target time and restores them from the flashback logs. The database restores the version of each block that is immediately before the target time. The database then uses redo logs to reapply changes that were made after these blocks were written to the flashback logs.可能理解的不准确,数据将各个版本的数据块都写入闪回日志?那闪回日志也太大了)。如果要还原到一周之前,则必须保留一周内的redo和归档。  而TSPITR需要保存日志的时间则更长些。

2)Flashback Database Window 闪回窗口
当前可以闪回的SCN的范围称为闪回窗口,取决于FRA的大小,如果FRA空间不足,则只能闪回到较近的时间。注意:闪回日志只能放在FRA中。 如果FRA空间不够,数据库会优先删除最早的闪回日志,而不是备份文件或其它文件 。有保证的还原点是确保能闪回到某个SCN的唯一方法。

3)Limitations of Flashback Database 数据库闪回的限制
1.不能用于介质恢复和删除数据文件 。原因:仅仅记录了修改过的块,而不是全面的块
2.如果目标SCN之后执行了缩减(shrink)操作,闪回失败。不过可以shrink过的数据文件脱机再执行闪回,再用RMAN还原和恢复。
3.如果在目标SCN之后,控制文件进行了还原或重创建,则无法使用闪回。
4.如果在目标SCN之后有nologing操作,则无法恢复nologing的数据,而且必须加上nologing选项。

4)Normal Restore Points 普通的还原点
普通的还原点对应一个SCN号,还原点的名称和SCN写在控制文件 中,控制文件中可以保存数千个还原点。普通还原点是轻量级的,几乎不需要任何维护,对数据库也几乎没有任何影响。当普通的还原点过期后,会从控制文件自动删除。普通还原点可以用在flashback database和不完全恢复。

5)Guaranteed Restore Points 有保证的还原点
有保证的还原点也对应一个SCN,但是永远不会过期,一直保存在控制文件中,除非手动删除。有保证的还原点能够确保数据库一定能闪回到该点,即使没有开启闪回日志。当创建一个有保证的还原点后,数据库会强制的将该点与前一个有保证的还原点之间的闪回日志保存下来,所以可以闪回到这两个点之间的任何一个SCN。注意:如果没有开启闪回日志,则不会闪回到这两个点之间的时刻,但是可以闪回到这个还原点上。有保证的还原点可以还原nologing的操作。 在创建了有保证 的还原点后,数据库的compatibility不能设置为更高的值。
有保证的还原点常用来执行一些有风险的操作,如在DG中,在物理备库上创建有保证的还原点来执行某些高风险操作。

2. Logging for Flashback Database and Guaranteed Restore Points 为闪回和有保证的还原点记录日志
有保证的还原点的日志记录了该SCN后数据块第一次修改后的镜像。有保证的还原点的日志和闪回日志的区别是数据块在什么时候被记录下来,以及记录的日志是否能被删除。

1.Guaranteed Restore Points and Fast Recovery Area Space Usage 有保证的还原点的空间使用
空间使用规则:
<1>当FRA有足够的空间时,闪回日志被创建,并且保证保留时间目标(flashback retention target).
<2>如果闪回日志已经很旧,则闪回日志会被重用
<3>如果必须要创建一个闪回日志,但是FRA中没有空间了,会删除旧的闪回日志
<4>如果创建了一个有保证的还原点,则为了保障该还原点的任何文件都不会删除.某些情况下,如果归档日志做了备份,可能被删除,需要用 到归档日志时,要从备份还原.不管是否启用闪回日志,都要注意FRA的使用情况,如果因为有保证的原来点导致FRA空间满了,会引用数据库挂起.
(上面说了这么多都没有说到点子上,呵呵)

2.Logging for Guaranteed Restore Points with Flashback Logging Disabled 关闭闪回日志下有保证的还原点的日志
当创建了有保证的还原点后,当数据块第一次被修改时,会把数据块镜像写在闪回日志中,再后来的变化不会写在闪回日志中.
其它效果有两个:
<1>.可以重建还原点时的数据文件,只要把镜像块还原到数据文件即可.
<2>.使用的空间比正常的闪回日志要少,因为数据块的变化只记录一次,而正常的闪回日志会对同一数据块记录多个版本.
当仅仅想将数据库还原到某个点时,创建一个有保证的还原点,然后关闭闪回日志.

3.Logging for Flashback Database with Guaranteed Restore Points Defined 在有保证的还原点下开启闪回
如果同时开启和闪回,并且创建了有保证的还原点,这时的闪回日志是普通的闪回日志(注意2,3两种情况的闪回日志是不一样的).闪回日志会确保可以闪回到两个有保证的还原点之间的任意SCN.
注意:此时必须监控FRA的空间使用情况!


3.Prerequisites for Flashback Database and Guaranteed Restore Points 同时开启闪回和创建有保证的还原点的前提
开启闪回的前提:
<1> 数据库运行在archivelog模式下
<2>必须开启FRA
<3>在RAC中,FRA必须在集群文件或ASM上
创建有保证的还原点:
除了以上几点外,还必须满足COMPATIBLE 参数必须是10.2.0 或以上.

4.Using Normal and Guaranteed Restore Points 使用普通还点(RP)和使用有保证的还原点(GRP)(以下均使用简称)
1.创建RP,在SQLPLUS中执行:
SQL> CREATE RESTORE POINT before_upgrade;
创建GRP:
SQL> CREATE RESTORE POINT before_upgrade GUARANTEE FLASHBACK DATABASE;

2.Listing Restore Points  列出RP
用RMAN命令:
LIST RESTORE POINT restore_point_name;
LIST RESTORE POINT ALL;
RMAN> LIST RESTORE POINT ALL;

using target database control file instead of recovery catalog
SCN RSP Time Type Time Name
---------------- --------- ---------- --------- ----
341859 28-JUL-06 28-JUL-06 NORMAL_RS
343690 28-JUL-06 GUARANTEED 28-JUL-06 GUARANTEED_RS
从控制文件中查询:
SQL> SELECT NAME, SCN, TIME, DATABASE_INCARNATION#,
GUARANTEE_FLASHBACK_DATABASE,STORAGE_SIZE
FROM V$RESTORE_POINT;
对于RP来说, STORAGE_SIZE是0,对GRP来说,是使用的磁盘空间大小

3.Dropping Restore Points 删除RP
注意:RP不能重名,想建同名的RP,必须删除旧的.
SQL> DROP RESTORE POINT before_app_upgrade;
Restore point dropped.
当RP的保留时间超过CONTROL_FILE_RECORD_KEEP_TIME 时,会被删除.当控制文件中的RP超过2048个时,旧的会被删除.注意:GRP永远不被自动删除.

5.Using Flashback Database 使用闪回
1.开启闪回日志:
设置闪回目标,默认是1440,一天.
ALTER SYSTEM SET DB_FLASHBACK_RETENTION_TARGET=4320; # 3 days
在mount下开启闪回
ALTER DATABASE FLASHBACK ON;
关闭开启某个表空间的闪回日志:
ALTER TABLESPACE tbs_3 FLASHBACK OFF;
ALTER TABLESPACE tbs_3 FLASHBACK ON;
注意:如果关闭了某个表空间的的闪回功能,在执行闪回时,必须先将这个表空间脱机

2.关闭闪回:
ALTER DATABASE FLASHBACK OFF;

3.Configuring the Environment for Optimal Flashback Database Performance 配置最佳闪回环境
 <1>使用最快的文件系统
 <2>足够的磁盘空间
 <3>略..........

4.Monitoring the Effect of Flashback Database on Performance 监控闪回对数据库的影响
可以通过AWR来看.
相关的视图(关于视图请查找refrence):
V$FLASHBACK_DATABASE_STAT:写闪回日志的速率
V$SYSSTAT  :

Table 7-1 V$SYSSTAT Statistics

Column Name Column Meaning

Physical write I/O request

The number of write operations issued for writing data blocks

Physical read I/O request

The number of read operations issued for reading data blocks

Redo writes

The number of write operations issued for writing to the redo log

Flashback log writes

The number of write operations issued for writing to flashback logs

Flashback log write bytes

Total size in bytes of flashback database data written from this instance




5.Flashback Writer (RVWR) Behavior with I/O Errors RVWR/O错误
当开启了闪回或创建GRP,则后台进程RVWR启动,将数据写进闪回日志.
如果RVWR出现I/O错误:
1.如果创建了GRP,则数据库停机
2.如果没有GRP,则数据库继续运行.此时有以下两种情况
<1>在主库(包括DG主库\单个数据库和RAC),数据库自动关闭闪回功能.
<2>在物理备库和逻辑备库上,RVWR停止,但是周期性的尝试写闪回日志,这最终会导致逻辑备库或managed recovery的物理备库挂起.这时要执行SHUTDOWN ABORT或ALTER DATABASE FLASHBACK OFF
















官方文档 恢复备份指南七 Using Flashback Database and Restore Points的更多相关文章

  1. 官方文档 恢复备份指南三 Recovery Manager Architecture

    本节讨论以下问题: About the RMAN Environment                        关于RMAN环境 RMAN Command-Line Client        ...

  2. 官方文档 恢复备份指南一 Introduction to Backup and Recovery

    1.备份分为:物理备份和逻辑备份    物理备份:备份数据文件  控制文件  归档日志文件     逻辑备份:EXP EXPDP备份等 物理备份为主,逻辑做补充     2.错误的类型         ...

  3. 官方文档 恢复备份指南二 Getting Started with RMAN

    本章对RMAN进行基本的熟悉和了解   1.Overview of the RMAN Environment    RMAN运行时需要的最小环境:      target database       ...

  4. 官方文档 恢复备份指南五 Configuring the RMAN Environment

    本章内容: Configuring the Environment for RMAN Backups    配置RMAN环境 Configuring RMAN to Make Backups to a ...

  5. 官方文档 恢复备份指南八 RMAN Backup Concepts

    本章内容 Consistent and Inconsistent RMAN Backups Online Backups and Backup Mode Backup Sets Image Copie ...

  6. 官方文档 恢复备份指南六 Configuring the RMAN Environment: Advanced Topics

    RMAN高级设置. 本章内容: Configuring Advanced Channel Options  高级通道选项 Configuring Advanced Backup Options 高级备 ...

  7. 官方文档 恢复备份指南四 Starting and Interacting with the RMAN Client

    本章讲: Starting and Exiting RMAN Specifying the Location of RMAN Output                                ...

  8. 《KAFKA官方文档》入门指南(转)

    1.入门指南 1.1简介 Apache的Kafka™是一个分布式流平台(a distributed streaming platform).这到底意味着什么? 我们认为,一个流处理平台应该具有三个关键 ...

  9. Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南

    Protocol Buffers(Protobuf) 官方文档--Protobuf语言指南 约定:为方便书写,ProtocolBuffers在下文中将已Protobuf代替. 本指南将向您描述如何使用 ...

随机推荐

  1. A Year in Computer Vision

    A Year in Computer Vision http://themtank.org/

  2. 大白话解释IP多播

    多播引入 比方说我是一个班主任,管着三个班,每个班30个人,每个班有自己的班长.领导让我宣传19大视 频报告,我这里有源文件.对于普通的单播我需要复制90个副本,给各个班长每人30份,然后班 长在自己 ...

  3. oracle快速添加用户及授权

    --Oracle使用的是用户管理模式--意味着,Oracle的数据使用用户来分割 --以后开发,我们需要每个项目都需要使用一个用户 --所以:一个数据文件是可以放多个用户的数据的.但是我们开发从数据的 ...

  4. c#本地缓存实现

    用了一段时间java,java实现服务端程序很简单,有很多公共开源的组件或者软件.但是c#的很少. 现在准备自己写点东西,学习下新的东西,总结下c#的内容以及我们经常用的内容,抽离成类,组件,模型.方 ...

  5. tablib模块

    ####tablib基础知识#### tablib是什么我就不说了,网上一大推,我大概就知道能将数据转为某种格式 1.安装tablib模块 pip install tablib 2.安装完毕,就在你要 ...

  6. Java解决跨域问题

    同源 URL由协议, 域名, 端口组成. 如果两个URL的协议, 域名, 端口相同, 那么这两个URL为同源. 同源策略 script, iframe, link 可以跨域加载一些静态资源, 比如脚本 ...

  7. 困扰我的c++语法

    以下是我上周学习c++ primer的心得: 1 数组引用作为形参 c++允许将变量定义成数组的引用,以下列代码为例.形参为int (&arr)[10],该参数需分成两部分说明,引用名和 引用 ...

  8. 洛谷P1731 [NOI1999]生日蛋糕(爆搜)

    题目背景 7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层 生日蛋糕,每层都是一个圆柱体. 设从下往上数第i(1<=i<=M)层蛋糕是半径为Ri, 高度为Hi的圆柱 ...

  9. python核心编程2 第十三章 练习

    13-3.对类进行定制.写一个类,用来将浮点型值转换为金额. class MoneyFmt(object): def __init__(self, value=0.0, flag='-'): self ...

  10. npm run build打包后自定义动画没有执行

    问题描述:在vue项目中,当你自己写了一些自定义动画效果,然后你npm run build打包项目放到线上环境后,发现动画并没有效果. 解决办法:在vue项目中找到build文件夹下的vue-load ...