官方文档 恢复备份指南七 Using Flashback Database and Restore Points

本章内容:

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 NameColumn 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




















原文地址:https://www.cnblogs.com/skyrim/p/3830589.html