ITPub博客

首页 > 数据库 > Oracle > 在物理备库上部署闪回数据库

在物理备库上部署闪回数据库

原创 Oracle 作者:pxbibm 时间:2015-10-30 14:30:59 0 删除 编辑

闪回数据库特性概述
闪回数据库技术(flashback database)是从oracle 10g开始提供的一个新特性。其主要功能可以是
将整个数据库回退到过去的一个时间点,即实现整库的按时间点恢复功能(database point-in-time recovery,DBPITR)。
闪回数据库技术通常用于将数据从误操作或者逻辑损坏中恢复。比如某天11点20有人错误的truncate了两张,10分钟后
该误操作被发现,此时一种恢复手段就是利用闪回数据库将整库回退到11点20之前,再打开数据库导出相应的数据。
在没有闪回数据库技术前,要实现DBPITR,必须借助媒体介质恢复(media recover)的方式,即依次执行:
1.restore 数据文件(可能只需要恢复丢失数据所涉及到的部分表空间)
2.restore 归档日志(视情况可能需要)
3.recover数据文件
相比之下,闪回数据库技术要快速的多,简单的多。

在物理备库上启用闪回数据库
为了启用闪回数据库特性,DBA必须配置快速恢复区fra,因为oracle将不断把对数据库的修改以数据块为单位写入
到存放在FRA中的闪回日志中,这样会增大系统的物理IO开销,对于很多磁盘IO已经是最主要性能瓶颈的生产库而言
启用闪回会引起DBA的顾虑。
经过实际的配置和测试确认,闪回数据库这一特性可以仅在物理备库physical standby database 上打开,这样既
不会对生产库(主库)的性能产生影响,又可以更充分的利用物理备库。我们额可以让物理备库处于实时应用日志
(而不是色湖之日志传输和应用的延迟)的状态下,让数据差异与主库维持在一个很短的时间范围内,以更好的提供
对只读查询业务的支持(即11g active data guard),同时还可以在需要的情况下闪回到一个早期的时间点,以挽救
误操作丢失的数据。
 在将物理备库闪回之后,需要以只读方式打开,这样在将需要的数据抽取完毕后,还可以继续启动MRP进程并利用
 归档日志文件追上主库,DBA不需要重建物理备库,这样也大大减轻了DBA的工作量。
 本文将描述在物理备库中启用闪回数据库特性所需要注意的各项配置,主要内容包括:
 1.配置快速恢复区。
 2.启用闪回数据库
 3.配置guaranteed restore point
 4.配置归档日志清除策略
 5.测试闪回数据库
 
 配置快速恢复区
 启用了闪回数据库之后,oracle将修改的数据块的映像不断的写入到一种叫“闪回数据库日志”的文件中,借助于这种
 文件,oracle才能够执行数据库的回退。
 闪回日志必须存储与快速恢复区(fast recovery area)中,因此在启动闪回数据库功能之前,必须首先设置好快速
 恢复区。
 作为物理备库,FRA中还需要存放归档日志文件,并且保存一定的时间,因为物理备库在闪回并完成丢失数据的抽取
 后,还需要借助较早时间点的归档文件进行日志应用(既MRP)。
 为此DBA需要规划存储分配并设置一下3个参数:
 1.log_archive_dest_1 'LOCATION=USE_DB_RECOVERY_FILE_DEST'
 2.db_recovery_file_dest_size 存放闪回日志和归档日志文件的目标容量
 3.db_recovery_file_dest 存放闪回日志和归档日志的目的,可以是ASM或者文件系统
 启用闪回数据库
 打开闪回数据库功能的操作非常简单,首先需要配置好参数
 1.db_flashback_retention_target 闪回窗口的目标时间长度,单位为分钟,缺省为1440既1天。
 最后一步就是将数据库启动到mount状态下,并执行
 startup mount;
 alter database flashback on;
 这样闪回数据库
 DBA可以通过这个查询闪回数据库特性是否已经开启。
 select flashback_on from v$database;
 
 配置guaranteed restore point
 oracle可以自动实现对闪回日志文件的空间管理,既根据所设置的闪回窗口,FRA区域剩余的空间状况以及
 guaranteed restore point,删除不再需要的闪回日志,从而避免沾满空间。
 需要注意的是:闪回窗口的设置值仅仅是一个目标值,oracle将根据实际情况进行调整,系统能够闪回的最早
 时间点可能比设定的窗口还早,也可能达不到所设定的窗口。
 为了确保能够闪回到某一段时间之前,必须创建所谓的 guaranteed restore point。比如dba想要在任何
 时刻都可以将数据库闪回到6个小时前,就必须在6个小时前创建好GRP,这样oracle不会自动删除这段时间
 的闪回日志。过了6个小时之后,DBA必须手动删除掉这个GRP,从而允许oracle删除不再需要的闪回日志并
 释放出fra的空间。
 假定dba根据实际的业务要求,为保证能够将数据库闪回到最多6个小时之前,可以采用如下的配置策略:
 1.创建与删除GRP的策略:每天的0,3,6,9,12,15,18,21点执行一个定时任务,用来创建一个GRP,
 并删除6个小时之前的GRP.
 在这种方式下,在任何给定的时间点,系统中都会存在一个6小时前的grp(最多时该GRP可以是9小时之前)
 设置db_flashback_retention_target>=360.
 
  配置归档日志清楚策略
  主要采取如下的清除策略
  总体策略 将归档存放于FRA中,这样归档文件和闪回日志都属于oracle managed file,oracle可以根据
  FRA的剩余空间情况自动清除。
  对于归档日志文件,采用oracle自动清除与人工清除相结合的方法,以最大限度保证闪回日志的空间。
  自动删除策略
  为使oracle可以自动删除归档日志,配置如下的归档删除策略
  configure archivelog deletion policy to applied on standby;
  人工删除策略
  同时配置定时任务,以删除9个小时之前的归档日志。
  测试闪回数据库
  在以上配置完成后,还需要对系统进行测试以验证可以实现设定的目标。
  下面为一个简单测试的主要步骤。
  测试步骤
  1.在15:50左右查询v$flashback_database_log 视图,确定可以回退到的最早时间点,在没有配置
  Guaranteed restore point的情况下,可以回退到11个小时之前。
  select * from v$flashback_database_log;
  2.关闭备库的MRP,将数据库重新启动到mount状态下。
  3.使用rman执行flashback database 命令
  rman target /
  flashback database to time "to_date('2015-10-30 05:00','yyyy-mm-dd hh24:mi')";
  4.flashback database命令执行完成后,数据库能够以只读方式成功打开。
  5.执行一些查询的sql语句作为测试。
  6.启动备库的redo apply,此时数据库将开始追日志,最终与主库数据库的log变为零。
  
  测试结果
  通过本次测试,确认flashback database 命令可以成功执行完成,数据库能够以只读方式打开。
  随后数据库可以继续应用redo,不需要重建物理备库。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12798004/viewspace-1819090/,如需转载,请注明出处,否则将追究法律责任。

下一篇: 无处不在的等待
请登录后发表评论 登录
全部评论
  • 博文量
    240
  • 访问量
    2154645