配置快速恢复区域(fast recovery area)

快速恢复区域特性让你可以设置一个数据库可以创建和管理各种备份和恢复相关的文件的磁盘区域。强烈建议使用快速恢复区域。考虑在执行备份策略时作为第一步配置一个快速恢复区域。

这个部分描述快速恢复区域的功能,鉴定存储在那里的文件,解释文件管理的规则和介绍最重要的配置选项。


1.快速恢复区域中的文件概览

快速恢复区域可以包含控制文件,在线redo日志,归档redo日志,闪回日志和RMAN备份。

恢复区域中的文件是永久的或临时的。永久文件是数据库实例使用的活动文件。所有不是永久的文件都是临时的。一般来说,数据库最终会在备份保留策略下临时文件变为过期时或已经备份到磁带之后删除它们。

快速恢复区域是一个数据库管理的空间,它可以用来存放RMAN磁盘备份,控制文件备份和归档redo日志文件。在这个位置存储的文件由数据库来维护,产生的文件名称以OMF(Oracle Managed Files)格式维护。

下表描述了恢复区域中的文件,每个文件的分类为永久和临时的,如何影响数据库的可用性。

文件类型当快速恢复区域不可用访问时数据库的行为
当前控制文件的多路(multiplexed)拷贝永久如果数据库不能写到存储在快速恢复区域中的控制文件的一个多路拷贝,实例会出故障。即使可访问的多路拷贝位于快速恢复区域外面,故障也会发生。
在线redo日志文件永久如果在线redo日志文件的一个镜像拷贝存在于快速恢复区域以外的可访问的位置,实例的可用性不受影响。否则,实例出故障。
归档redo日志文件临时如果日志被归档到在快速恢复区域以外的可访问的位置,实例的可用性不受影响。否则,数据库最终会停止,因为它不能归档在线redo日志。
外来的归档redo日志文件临时实例的可用性不受影响。注:外来的归档redo日志被逻辑备数据库的LogMiner会话接收。不像普通的归档redo日志,外来的归档redo日志与不同的DBID关联。因为这个原因,它不能在逻辑备数据库上被备份或还原。
数据文件和控制文件的映像拷贝临时实例的可用性不受影响。
备份片临时实例的可用性不受影响。
闪回日志临时如果保证还原点没有定义,实例的可用性不受影响。在这种情况,数据库自动禁用闪回数据库,写一条消息到alert日志,继续数据库的处理。如果配置了保证还原点,因为对闪回日志的相互依赖性,实例会出故障。闪回数据库的特性提供一个方便的可选的方法进行数据库时间点恢复(DBPITR),它会生成闪回日志。这些日志是临时文件和必须存储在快速恢复区域。不像其它临时文件,闪回日志不能备份到其它介质。如果快速恢复区域没有足够的空间来存储闪回日志和满足其它备份保留要求,那么恢复区域可能会删除闪回日志。

如果在Windows平台上,可以使用Volume Shadow Copy Service(VSS)和Oracle VSS writer。在这种情况中,快速恢复区域自动管理备份在VSS快照中的管理文件,根据需要删除它们。


1.1.快速恢复区域与OMF和ASM

快速恢复区域可以与OMF(Oracle Managed Files)和ASM(Automatic Storage Management)一起使用。

因为快速恢复区域建立在OMF之上,它可以存储在OMF可以存放的任何位置。也可以与ASM一起使用恢复区域。

即使你选择不设置快速恢复区域在ASM存储中,你仍然可以使用OMF来管理在ASM磁盘组中的备份文件。然而,你会失去快速恢复区域的一个主要好处:当更多的最新备份需要空间时,自动删除不再需要的文件来满足恢复性目标。不过,其它OMF的自动特性仍然有效。

当存储备份时,在ASM上使用OMF但不使用快速恢复区域是支持的但不建议。直接操作ASM上的文件是不方便的。


1.2.Oracle如何管理快速恢复区域中的磁盘空间

在快速恢复区域的空间在备份,按照保留策略必须保留的归档日志和其它可能需要删除的文件之间平衡。

Oracle数据库不从快速恢复区域中删除符合条件的文件直到必须回收空间用于其它目的。然而,从Oracle数据库19c版本开始,超出配置的保留期限的闪回日志会被自动删除。最近移动到磁带的文件仍然在磁盘上,可用于恢复。这样恢复区域可以充当磁带的缓存。当快速恢复区域已满时,Oracle数据库自动删除符合条件的文件来从恢复区域中回收需要的空间。


2.启用快速恢复区域

通过设置两个初始化参数来启用快速恢复区域。这些参数在需要或不需要关闭和重启数据库实例的情况下(with or without having to shut down and restart the database instance)启用快速恢复区域。

先使用参数DB_RECOVERY_FILE_DEST_SIZE设置快速恢复区域的大小,然后使用参数DB_RECOVERY_FILE_DEST设置快速恢复区域的物理位置。

下表讨论了必需的和可选的启用快速恢复区域的参数。

在Oracle RAC数据库中,所有实例的这些初始化参数必须具有相同的值。位置必须在集群文件系统,ASM或共享目录上。

初始化参数必需的描述
DB_RECOVERY_FILE_DEST_SIZE指定磁盘配额,数据库的恢复区域使用的最大数据存储空间(bytes)。必须在参数DB_RECOVERY_FILE_DEST之前设置。DB_RECOVERY_FILE_DEST_SIZE设置不包含以下类型的磁盘消耗:1) 不包含Block 0或每个数据库文件的操作系统块头。当计算快速恢复区域实际的磁盘使用要求时,为这个数据允许额外的10%空间。2) DB_RECOVERY_FILE_DEST_SIZE不是预示占用磁盘的真实大小,当底层的操作系统是镜像,压缩或被数据库不知的消耗影响时。例如,当快速恢复区域位于两路的镜像ASM磁盘组,每个x bytes的文件占用ASM磁盘组的2x bytes的空间。在这种情况下,参数设置不要超过ASM磁盘组的一半空间大小。类似地,当使用三路镜像的ASM磁盘组时,参数设置必须不要超过1/3的磁盘组空间大小。
DB_RECOVERY_FILE_DEST指定恢复区域位置,可以是文件系统目录或ASM磁盘组,但不是raw磁盘。位置必须足够大以满足磁盘配额。
DB_FLASHBACK_RETENTION_TARGET指定数据库可以闪回的时间上限(分钟)。这个参数只是闪回数据库需要。这个参数间接确定了多少闪回日志数据必须保留在恢复区域。取决于数据库的负载,数据库生成的闪回日志的大小变化很大。在一段时间内,如果数据库更新影响了更多的数据块,那么这段时间里产生的闪回日志数据使用更多的磁盘空间。

2.1.设置快速恢复区域的大小考虑

快速恢复区域越大,它就越有用。理想情况下,足够大的快速恢复区域可以包含控制文件,在线redo日志,归档redo日志和闪回日志。它应该能够包含你选择的备份策略使用的数据库的所有数据文件的一个拷贝和增量备份。

如果提供很多的空间是不符合实际情况,那么最好创建一个足够大的区域来保留最重要的表空间的一个备份和所有不在磁带上的归档日志。在绝对最小的情况下,快速恢复区域必须足够大来包含不在磁带上的的归档日志。如果恢复区域没有足够的空间来存储新的闪回日志和满足其它备份保留要求,那么快速恢复区域会删除旧的闪回日志来腾出空间。

估计有用的快速恢复区域大小的公式取决于是否:
1) 数据库有小部分或大量的数据块频繁更改
2) 只在磁盘上存储备份,或在磁盘和磁带上
3) 使用基于冗余的备份保留策略,或基于恢复窗口的保留策略
4) 计划使用闪回数据库或一个保证的还原点作为响应逻辑错误的时间点恢复(PITR)的替代方案

如果计划启用闪回日志,那么产生的闪回日志的容量大约与产生的redo日志相同的数量级。例如,如果打算设置DB_FLASHBACK_RETENTION_TARGET为24小时,如果数据库每天产生20GB的redo日志,那么通常的经验法则是允许20-30GB的磁盘空间来存储闪回日志。当闪回日志启用时,相同的规则应用到保证还原点(guaranteed restore point)。例如,如果数据库每天产生20GB的redo日志和保证还原点保留一天,那么计划分配20-30GB空间给闪回日志。

假设当备份保留策略设置为REDUNDANCY 1时,你想听从Oracle的建议策略使用永久增量(incremental forever)和确认快速恢复区域的大小。在这个示例中,可以使用以下的公式来估计磁盘配额,n是增量更新之间的时间间隔(天数),y是在逻辑备数据库上应用外来的归档redo日志的延迟时间。

Disk Quota =
Size of a copy of database +
Size of an incremental backup +
Size of (n+1) days of archived redo logs +
Size of (y+1) days of foreign archived redo logs (for logical standby) +
Size of control file +
Size of an online redo log member * number of log groups +
Size of flashback logs (based on DB_FLASHBACK_RETENTION_TARGET value)


2.2.设置快速恢复区域的位置考虑

将快速恢复区域设置在与数据库维护的活动数据库文件(比如数据文件,控制文件,在线redo日志等)所在的数据库区域不同的磁盘上。如果将快速恢复区域设置在与数据库区域相同的磁盘上,当介质发生故障时,活动数据库文件和备份都会面临丢失。

Oracle建议参数DB_RECOVERY_FILE_DEST设置为与初始化参数DB_CREATE_FILE_DEST和DB_CREATE_ONLINE_LOG_DEST_n不同的值。如果DB_RECOVERY_FILE_DEST与这些参数的值相同,数据库会写一条告警到alert日志。

多个数据库可以拥有相同的DB_RECOVERY_FILE_DEST值,但必须满足以下的一个条件:
1) 没有两个数据库的初始化参数DB_UNIQUE_NAME被指定为相同的值
2) 对于没有提供DB_UNIQUE_NAME的数据库,没有两个数据库的DB_NAME值相同。

当数据库共享一个恢复区域时,位置应该足够大来存储所有数据库的文件。累加数据库的DB_RECOVERY_FILE_DEST_SIZE值,然后允许容量消耗比如镜像或压缩。


2.3.设置快速恢复区域的位置和大小

使用数据库初始化参数来设置快速恢复区域的位置和大小。

确认快速恢复区域的最佳大小和设置恢复区域位置:
1)如果打算使用闪回日志或保证还原点,那么查询V$ARCHIVED_LOG来确认数据库在你想设置DB_FLASHBACK_RETENTION_TARGET的期间产生了多少redo数据。

2)设置恢复区域大小。
如果打算使用闪回日志或保证还原点,那么确保从第一步获取的大小值已经合并到这个设置。通过以下任何方式来设置初始化参数DB_RECOVERY_FILE_DEST_SIZE:
a. 关闭数据库,在数据库的初始化参数文件中设置DB_RECOVERY_FILE_SIZE参数,如下所示:
DB_RECOVERY_FILE_DEST_SIZE = 10G
b.当数据库打开时,使用SQL语句ALTER SYSTEM SET指定参数,如下所示:
ALTER SYSTEM SET
  DB_RECOVERY_FILE_DEST_SIZE = 10G
  SCOPE=BOTH SID=‘*’;

c. 使用DBCA(Database Configuration Assistant)来设置大小。

3) 设置恢复区域位置。
通过以下任何方式设置初始化参数:
a.在数据库的初始化参数文件中设置DB_RECOVERY_FILE_DEST参数,如下所示:
DB_RECOVERY_FILE_DEST = ‘/u01/oradata/rcv_area’

b.当数据库打开时,使用SQL语句ALTER SYSTEM SET指定参数,如下所示:
ASM磁盘组:
ALTER SYSTEM SET
  DB_RECOVERY_FILE_DEST = ‘+diskgroup1’
  SCOPE=BOTH SID=‘*’;

文件系统:
ALTER SYSTEM SET
  DB_RECOVERY_FILE_DEST = ‘/disk1/fast_recovery_area’
  SCOPE = BOTH SID = ‘*’;

c. 使用DBCA(Database Configuration Assistant)来设置位置。

如果不打算使用闪回日志,那么打开数据库(如果它是关闭的),不要完成这个过程中剩余的步骤。

4)如果启用闪回日志,那么在正常负载下运行数据库由参数DB_FLASHBACK_RETENTION_TARGET指定的一段时间。这样,数据库可以生产有代表性的闪回日志样本。

5) 查询视图V$FLASHBACK_DATABASE_LOG如下:
SELECT ESTIMATED_FLASHBACK_SIZE FROM V$FLASHBACK_DATABASE_LOG;

在输出结果中评估的磁盘空间需要满足当前的闪回保留目标,基于从闪回数据库启用以后的数据库负载。

6)如果有必要,基于DB_FLASHBACK_RETENTION_TARGET指定的时间段实际产生的闪回日志大小调整要求的闪回日志空间。

7)查看快速恢复区域的使用情况。

SQL> SELECT * FROM V$FLASH_RECOVERY_AREA_USAGE;

FILE_TYPE               PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES     CON_ID
----------------------- ------------------ ------------------------- --------------- ----------
CONTROL FILE                           .07                         0               1          0
REDO LOG                              5.23                         0               8          0
ARCHIVED LOG                         17.24                       .01              34          0
BACKUP PIECE                          2.69                         0               5          0
IMAGE COPY                               0                         0               0          0
FLASHBACK LOG                        12.43                       .65              19          0
FOREIGN ARCHIVED LOG                     0                         0               0          0
AUXILIARY DATAFILE COPY                  0                         0               0          0

3.禁用快速恢复区域

可以使用ALTER SYSTEM命令来禁用快速恢复区域。

如果已经启用闪回数据库或使用快速恢复区域来存储归档日志,那么采取以下适合的步骤。否则跳到步骤4:
1) 如果已启用闪回数据库,那么在禁用快速恢复区域之前禁用它。
ALTER DATABASE FLASHBACK OFF;

2)如果使用快速恢复区域来存储归档日志,那么设置初始化参数LOG_ARCHIVE_DEST_n来使用非快速恢复区域位置。

例如,将LOG_ARCHIVE_DEST_1从快速恢复区域更改到非快速恢复区域:
LOG_ARCHIVE_DEST_1=‘LOCATION=USE_DB_RECOVERY_FILE_DEST’

ALTER SYSTEM SET LOG_ARCHIVE_DEST_1=‘LOCATION=/ORACLE/DBS/’;

3)将控制文件和在线redo日志文件拷贝迁移到非快速恢复区域的位置。

4)禁用快速恢复区域初始化参数。
ALTER SYSTEM SET DB_RECOVERY_FILE_DEST=‘’;


4.配置控制文件和redo日志的位置

使用初始化参数配置控制文件和redo日志的缺省位置。


4.1.配置在线redo日志位置

初始化参数DB_CREATE_ONLINE_LOG_DEST_n,DB_RECOVERY_FILE_DEST和 DB_CREATE_FILE_DEST决定在线redo日志文件创建在哪个位置。

下面的SQL语句可以创建在线redo日志在快速恢复区域:
1)CREATE DATABASE
2)ALTER DATABASE ADD LOGFILE
3)ALTER DATABASE ADD STANDBY LOGFILE
4)ALTER DATABASE OPEN RESETLOGS

创建在快速恢复区域的在线redo日志的缺省大小是100MB。日志成员的文件名称由数据库自动生成。


4.2.配置控制文件位置

初始化参数CONTROL_FILES,DB_CREATE_ONLINE_LOG_DEST_n,DB_RECOVERY_FILE_DEST和 DB_CREATE_FILE_DEST交互来决定数据库的控制文件的创建位置。

如果数据库创建Oracle管理的控制文件和数据库使用服务器参数文件,那么数据库在服务器参数文件中设置CONTROL_FILES初始化参数。如果数据库使用客户端的初始化参数文件,那么必须手动设置CONTROL_FILES初始化参数在初始化参数文件中。


4.3.配置归档redo日志位置

Oracle建议使用快速恢复区域作为归档位置,因为归档日志由数据库自动管理。

在快速恢复区域中的归档日志的文件名称是为OMF(Oracle managed files)生成的,不是由参数LOG_ARCHIVE_FORMAT决定的。不管选择哪种归档方案,创建归档redo日志的多个拷贝总是合理的。

归档redo日志有以下基本的选项,按建议的优先顺序列出:
1)只启用归档到快速恢复区域,使用磁盘镜像创建需要的冗余来保护归档redo日志。
如果指定了DB_RECOVERY_FILE_DEST,但没有指定LOG_ARCHIVE_DEST_n,那么LOG_ARCHIVE_DEST_10会隐含地设置到快速恢复区域。可以通过设置LOG_ARCHIVE_DEST_10为空字符串来覆盖这种行为。

2)启用归档到快速恢复区域,设置其它LOG_ARCHIVE_DEST_n初始化参数到位于快速恢复区域以外的位置。
如果配置了快速恢复区域,那么通过设置LOG_ARCHIVE_DEST_n参数为LOCATION=USE_DB_RECOVERY_FILE_DEST来增加快速恢复区域作为归档目的地。

3)设置LOG_ARCHIVE_DEST_n初始化参数只归档到非快速恢复区域。

如果使用了快速恢复区域,那么不能使用LOG_ARCHIVE_DEST和LOG_ARCHIVE_DUPLEX_DEST初始化参数。使用这两个参数的任何一个都会无法启动实例。可替代的,使用LOG_ARCHIVE_DEST_n参数。

注意如果启用了归档,但没有设置LOG_ARCHIVE_DEST,LOG_ARCHIVE_DEST_n或DB_RECOVERY_FILE_DEST中的任何一个值,那么redo日志会归档到操作系统特定的缺省位置。例如,在Solaris中缺省位置是?/dbs。


5.配置在快速恢复区域中创建RMAN文件

某些RMAN命令或隐含的操作(例如控制文件自动备份)可以在快速恢复区域中创建文件。

这部分阐述如何控制命令是否创建文件在快速恢复区域或其它目的地。这些命令是:
1)BACKUP
如果没有为磁盘备份指定FORMAT子语句,那么RMAN创建备份片和映像拷贝到快速恢复区域中,文件名称是OMF格式。如果启用了快速恢复区域,但指定了BACKUP的FORMAT子语句或通道的FORMAT选项,那么RMAN创建备份到特定的平台位置,而不是快速恢复区域。

2) 控制文件自动备份
RMAN可以创建控制文件自动备份到快速恢复区域。使用RMAN命令CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK CLEAR清除任何配置的磁盘备份的控制文件自动备份的FORMAT选项。当没有配置其它目的地时,RMAN创建控制文件的自动备份到快速恢复区域。

3) RESTORE ARCHIVELOG
明确或隐含地设置LOG_ARCHIVE_DEST_n参数到LOCATION=USE_DB_RECOVERY_FILE_DEST。如果不指定SET ARCHIVELOG DESTINATION来覆盖这种行为,那么RMAN还原归档redo日志文件到快速恢复区域。

4)RECOVER DATABASE或RECOVER TABLESPACE,RECOVER … BLOCK和FLASHBACK DATABASE
这些命令在介质恢复过程中按命令要求从备份还原归档redo日志文件来使用。在这些操作的过程中RMAN还原任何需要的redo日志到快速恢复区域,在介质恢复过程中应用它们之后再删除它们。
为了指向还原的归档日志到快速恢复区域,设置一个LOG_ARCHIVE_DEST_n参数为LOCATION=USE_DB_RECOVERY_FILE_DEST。确认没有使用SET ARCHIVELOG DESTINATION指向还原日志到其它目的地。



来源:《Oracle Database Backup and Recovery User’s Guide,19c》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值