【备份恢复】闪回数据库(一)闪回数据库的管理

Flashback Database闪回数据库:与RMAN的不完全恢复非常类似,它可以把整个数据库回退到过去的某个时点的状态,这个功能依赖于Flashback log日志。比RMAN更快速和高效,因此Flashback Database 可以看作是不完全恢复的替代技术。闪回数据库的前提是要开启归档日志。

闪回原理:在启用闪回数据时,会将修改过的块的前映像作为闪回数据库日志保存在闪回恢复区中,如出现逻辑坏块或用户错误操作需要恢复到过去的时间点,闪回数据库将还原数据库的前映像,然后使用归档日志和redo前滚到期望恢复的时间点,因为无需还原数据库的数据文件,所有此过程速度比较传统的还原恢复通常快很多。

 闪回限制:

   Flashback Database 不能解决Media Failure 这种错误RMAN恢复仍是唯一选择;

   如果删除了数据文件或者利用Shrink技术缩小数据文件大小,这时不能用Flashback Database技术回退到改变之前的状态,这时候就必须先利用RMAN把删除之前或者缩小之前的文件备份restore出来,然后利用Flashback Database执行剩下的Flashback Database;    

   如果控制文件是从备份中恢复出来的,或者是重建的控制文件,也不能使用Flashback Database

   使用Flashback Database能恢复到的最早的SCN,取决与Flashback Log中记录的最早SCN

 配置闪回参数:

 闪回数据库相关参数:
① db_recovery_file_dest               #
决定闪回恢复区路径
② db_recovery_file_dest_size         #
决定闪回恢复区大小
③ db_flashback_retention_target    #
保留恢复最近多长时间的数据,单位为分钟。

闪回相关视图:
 ① V$restore_point                           #
闪回点
 ② V$FLASHBACK_DATABASE_LOG        #
闪回日终信息
③ V$FLASHBACK_DATABASE_STAT

 ④ v$flash_recovery_area_usage;          #闪回区使用率

 

1.1. 数据库闪回基本步骤
前提:闪回归档日志可用
1) 关闭数据库
2) 启动数据库到 mount 状态(exclusive 模式)
3) 闪回至某个时间点, SCN 或还原点
4) Read only 打开数据库,验证是否已还原到理想的时间点
5) 使用 resetlogs 打开数据库


1.2. 常用闪回数据库方法
1) 基于 SCN 闪回
FLASHBACK [STANDBY] DATABASE [] TO
[BEFORE] SCN
2) 基于时间戳闪回
FLASHBACK [STANDBY] DATABASE [] TO
[BEFORE] TIMESTMP
3) 基于可靠还原点闪回
FLASHBACK [STANDBY] DATABASE [] TO
[BEFORE] RESTORE POINT
4) RMAN 命令行执行闪回数据库


1.3. 开启数据库闪回功能
1) 验证数据库是否开启闪回, NO 表示未开启(默认)

SYS@ORA11GR2>select flashback_on from v$database;

 

FLASHBACK_ON

------------------

NO

 

2) 闪回日志保留期限(默认保留 1 ,本测试改为保留 2 )

SYS@ORA11GR2>show parameter flashback

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_flashback_retention_target        integer     1440

 

SYS@ORA11GR2>alter system set db_flashback_retention_target=2880;

 

System altered.

SYS@ORA11GR2>show parameter flashback

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_flashback_retention_target        integer     2880

 

3) 启用闪回数据库功能:

启用闪回数据库需使用闪回日志,而闪回日志在闪回归档里;闪回归档又必须要启用快速恢复区(因为闪回归档在快速恢复区里),同时又得启用归档进程!!!!!

——前提:

查询:

SYS@ORA11GR2>show parameter recover

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string

db_recovery_file_dest_size           big intege r   0

db_unrecoverable_scn_tracking        boolean    TRUE

recovery_parallelism                 integer     0

 

SYS@ORA11GR2>archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/app/arch2

Oldest online log sequence     49

Next log sequence to archive   51         

Current log sequence           51

 

SYS@ORA11GR2>alter system set db_recovery_file_dest_size=3G;

 

System altered.

 

SYS@ORA11GR2>alter system set db_recovery_file_dest='/u01/app/FRA';

 

System altered.

验证:

SYS@ORA11GR2>show parameter recover

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

db_recovery_file_dest                string      /u01/app/FRA

db_recovery_file_dest_size           big integer 3G

db_unrecoverable_scn_tracking        boolean     TRUE

recovery_parallelism                 integer     0

 

SYS@ORA11GR2>archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            /u01/app/arch2

Oldest online log sequence     49

Next log sequence to archive   51

Current log sequence           51

SYS@ORA11GR2>

 

再修改:

SYS@ORA11GR2>show parameter log_archive

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_config                   string

log_archive_dest                     string

log_archive_dest_1                   string      location=/u01/app/arch1

log_archive_dest_10                  string

log_archive_dest_11                  string

log_archive_dest_12                  string

log_archive_dest_13                  string

log_archive_dest_14                  string

log_archive_dest_15                  string

log_archive_dest_16                  string

log_archive_dest_17                  string

 

NAME                                 TYPE        VALUE

------------------------------------ ----------- ------------------------------

log_archive_dest_18                  string

log_archive_dest_19                  string

log_archive_dest_2                   string      location=/u01/app/arch2

log_archive_dest_20                  string

log_archive_dest_21                  string

 

解决:

SYS@ORA11GR2>alter system set log_archive_dest_2='';

 

System altered.

 

SYS@ORA11GR2>alter system set log_archive_dest_1='';

 

System altered.

 

SYS@ORA11GR2>alter system set db_recovery_file_dest='';

 

System altered.

 

SYS@ORA11GR2>alter system set db_recovery_file_dest='/u01/app/FRA';

 

System altered.

 

验证:

SYS@ORA11GR2>archive log list;

Database log mode              Archive Mode

Automatic archival             Enabled

Archive destination            USE_DB_RECOVERY_FILE_DEST

Oldest online log sequence     55

Next log sequence to archive   57

Current log sequence           57

——启动闪回数据库:

SYS@ORA11GR2>shutdown immediate;

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@ORA11GR2>

SYS@ORA11GR2>startup mount;

ORACLE instance started.

 

Total System Global Area  730714112 bytes

Fixed Size                  2256832 bytes

Variable Size             452984896 bytes

Database Buffers          272629760 bytes

Redo Buffers                2842624 bytes

Database mounted.

SYS@ORA11GR2>

SYS@ORA11GR2>alter database flashback on;

(要将闪回归档信息入控制文件中,在应用日志之前)

Database altered.

 

验证:

SYS@ORA11GR2>select flashback_on from v$database;

 

FLASHBACK_ON

------------------

YES

 

SYS@ORA11GR2>alter database open;

 

Database altered.

 

SYS@ORA11GR2>!ps -ef|grep rvw

oracle    3688     1  0 06:43 ?        00:00:00 ora_rvwr_ORA11GR2

oracle    4003  3312  0 06:44 pts/1    00:00:00 /bin/bash -c ps -ef|grep rvw

oracle    4005  4003  0 06:44 pts/1    00:00:00 grep rvw

 

RVWR:恢复写入器(Recovery Writer    负责维护闪回恢复区中块的前映像,要与FLASHBACK DATABASE命令一起使用.

 

1.4. 监视闪回数据库
1.4.1. 查看快速恢复区磁盘配额

SYS@ORA11GR2>select estimated_flashback_size,flashback_size from v$flashback_database_log;

 

ESTIMATED_FLASHBACK_SIZE FLASHBACK_SIZE

------------------------ --------------

               131973120      209715200

 

1) ESTIMATED_FLASHBACK_SIZE 使用先前记录的闪回数据,来估计要满足当前闪回保留目标时闪回
日志在快速恢复区中所需的磁盘空间。该估计基于以下两段时间中较短时间段内的工作量:自实例启
动以来的时间段或等于闪回保留目标的最近时间间隔。
2) FLASHBACK_SIZE 提供当前闪回数据的大小,以字节表示。

 

1.4.2. 确定当前闪回窗口

SYS@ORA11GR2>select oldest_flashback_scn,oldest_flashback_time from v$flashback_database_log;

 

OLDEST_FLASHBACK_SCN OLDEST_FLASHBACK_TI

-------------------- -------------------

             1816541 2016-09-30 13:48:58

 

3) OLDEST_FLASHBACK_SCN 显示可以将数据库闪回到的最小 SCN
4) OLDEST_FLASHBACK_TIME
显示可以将数据库闪回到的最小时间的近似值。

 

1.4.3. 监视闪回数据库日志中的事件记录

SYS@ORA11GR2>select * from v$flashback_database_stat;

 

BEGIN_TIME          END_TIME            FLASHBACK_DATA    DB_DATA  REDO_DATA ESTIMATED_FLASHBACK_SIZE

------------------- ------------------- -------------- ---------- ---------- ------------------------------------------------------------------------------------------------

2016-10-01 07:03:54 2016-10-01 07:09:06        4546560          6406144     267264                        0

 

使用 V$FLASHBACK_DATABASE_STAT 视图监视闪回数据库日志中记录闪回数据的开销。此视图包含
24 小时的信息,每一行代表一个小时的时间间隔。可以使用此视图确定闪回数据生成过程中的比率变化
1) BEGIN_TIME 开始时间间隔
2) END_TIME 结束时间间隔
3) FLASHBACK_DATA 时间间隔内写入的闪回数据字节数
4) DB_DATA 提供读取和写入的数据块字节数。此视图还包含该间隔所需的估计闪回空间。
5) REDO_DATA 时间间隔内写入的闪回重做数据字节数
6) ESTIMATED_FLASHBACK_SIZE 该间隔所需的估计闪回空间

请使用浏览器的分享功能分享到微信等