在恢复目录中注册数据库
创建恢复目录后,我们必须在恢复目录中注册目标数据库。
使用 REGISTER DATABASE 命令仅注册主数据库。
当我们连接到备用数据库或者执行 CONFIGURE DB_UNIQUE_NAME 命令以指定物理备用数据库的网络服务名称时,备用数据库会自动注册到恢复目录中。
要注册主数据库:
- 调用 RMAN 并连接到恢复目录数据库和目标数据库,如以下示例所示:
rman TARGET / CATALOG rcowner/rcpass@reccatdb
确保目标数据库已挂载或者打开。
发出 REGISTER 命令以在恢复目录中注册目标数据库:
RMAN> REGISTER DATABASE;
逻辑备数据库的备份与恢复
我们可以使用与主数据库相同的方法来备份逻辑备用数据库。
备份文件不能与主数据库互换。
请记住,这是一个不同的数据库。
我们可以使用与用于任何其他数据库相同的恢复技术来丢失数据文件或者联机日志文件。
我们必须使用逻辑(而不是主)数据库的备份。
如果整个逻辑备数据库丢失,则必须重新创建逻辑备库。
如果我们丢失了控制文件的所有副本,则在执行恢复时必须使用控制文件的二进制副本。
(使用跟踪文件或者 CREATE CONTROLFILE 命令进行控制文件恢复不会创建逻辑备用控制文件。
)通过执行以下任一操作来制作控制文件的二进制副本:
关闭逻辑备用并将控制文件复制到备份。
在逻辑备用数据库打开时发出以下命令:
ALTER DATABASE BACKUP CONTROLFILE TO '[filename]';
此命令使用我们提供的名称创建控制文件的二进制副本。
在主数据库上设置 RMAN 持久配置参数
- 配置保留策略以确定需要保留的备份以恢复到指定时间点。
此设置指定应保留必要的备份,以便在指定的天数内将数据库恢复到任何时间点。
CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF [n] DAYS;
执行 DELETE OBSOLETE 命令以删除保留策略不需要的任何备份。
- 使用CONFIGURE ARCHIVELOG DELETION POLICY 命令指定何时可以删除归档日志。
要在确保已发送到所有目的地后删除日志:
CONFIGURE ARCHIVELOG DELETION POLICY TO SHIPPED TO ALL STANDBY;
在确保日志已应用于所有备用目的地后删除日志:
CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
3、配置主库和所有备库的连接标识,以便RMAN在执行RESYNC CATALOG FROM DB_UNIQUE_NAME命令时可以远程连接并重新同步。
连接标识符是可从任何数据库站点用于连接到指定数据库站点的 Oracle Net 服务名称。
CONFIGURE DB_UNIQUE_NAME 隐式注册数据库。
RMAN> CONFIGURE DB_UNIQUE_NAME boston CONNECT IDENTIFIER 'boston'; RMAN> CONFIGURE DB_UNIQUE_NAME london CONNECT IDENTIFIER 'london'
限制和使用说明
如果物理备用数据库备份可用于主站点的还原作业,则在备份备用数据库时必须连接到恢复目录,或者必须在备份后不久重新同步物理备用数据库。
这一步是必要的,因为除非备份记录存储在恢复目录中,否则主数据库无法知道备用备份。
备份备用数据库时,必须使用 TARGET 关键字(而不是 AUXILIARY 关键字)连接到备用数据库。
在备份期间,备用数据库实质上是“替代”主数据库。
从主数据库上的数据文件丢失中恢复
- 使用备份
- 使用备用数据库上的文件
以下各节将介绍这两种方法。
执行 RECOVER BLOCK 命令
在以前的 Oracle 数据库版本中,当我们执行 RECOVER ... BLOCK 命令来执行块介质恢复时,RMAN 会在闪回日志中搜索块的良好副本,然后在完整或者 0 级增量备份中进行搜索。
现在 RMAN 首先尝试从配置了实时查询的物理备用数据库中恢复块。
RECOVER DATAFILE 6 BLOCK 3; ### Recover a single block RECOVER ### Recover multiple blocks DATAFILE 2 BLOCK 43,79 ### in multiple data files DATAFILE 6 BLOCK 183;
如果 RMAN 在物理备用数据库中找不到有效块,则会搜索闪回日志。
最后,搜索完整或者 0 级增量备份。
为了让 RMAN 能够在备用数据库中搜索损坏块的良好副本,目标数据库必须与 Data Guard 环境中的物理备用数据库相关联。
此外,物理备用数据库必须在托管恢复中以只读方式打开。
恢复备库数据文件
使用备份恢复备用数据库上的数据文件
要恢复备用数据库上的数据文件,我们必须使用 RESTORE DATAFILE RMAN 命令将丢失的文件从备份恢复到备用数据库。
如果备份数据库可以在磁盘上访问恢复文件所需的所有归档重做日志文件,则只需重新启动重做应用即可。
如果无法在磁盘上访问恢复所需的归档重做日志文件,请使用 RMAN 将恢复的数据文件恢复到大于应用于备用数据库的最后一个日志的 SCN 或者日志序列。
接下来,重新启动重做应用以继续应用重做数据。
使用主数据库中的数据文件
我们可以使用主数据库中的当前数据文件来恢复备用数据库上的文件。
在物理备库上设置 RMAN 持久化配置参数
在我们将用于备份的物理备用数据库上,如下设置 RMAN 持久配置参数:
启用控制文件和服务器参数文件的自动备份。
CONFIGURE CONTROLFILE AUTOBACKUP ON;
将备份优化设置为 ON,以便 RMAN 不备份具有相同检查点的有效备份的数据文件。
CONFIGURE BACKUP OPTIMIZATION ON;
指定归档日志文件删除策略以指示何时删除归档重做日志文件。
CONFIGURE ARCHIVELOG DELETION POLICY TO BACKED UP 1 TIMES TO DEVICE TYPE DISK;
备份到磁带时,根据媒体管理软件的要求配置磁带通道。
在其他备用数据库上设置 RMAN 持久配置参数
在不执行备份的备用数据库上,指定归档日志在应用到备用数据库后可以删除:
RMAN> CONFIGURE ARCHIVELOG DELETION POLICY TO APPLIED ON ALL STANDBY;
RMAN 备份的关联和可访问性
恢复目录通过将每个数据库文件或者备份文件与 DB_UNIQUE_NAME 相关联来跟踪 Oracle Data Guard 环境中的文件。
创建文件的数据库与该文件相关联。
例如,如果 RMAN 使用唯一名称“standby1”备份数据库,则standby1 与此备份相关联。
除非我们使用 CHANGE ... RESET DB_UNIQUE_NAME 将备份与不同的数据库相关联,否则备份将与创建它的数据库保持关联。
备份的可访问性与其关联不同。
在 Oracle Data Guard 环境中,恢复目录认为磁盘备份仅可由与其关联的数据库访问,而在一个数据库上创建的磁带备份可由所有数据库访问它在所有数据库中。
如果备份文件未与任何数据库关联,则在恢复目录视图中描述它的行的 SITE_KEY 列显示为空。
默认情况下,RMAN 将 SITE_KEY 为空的文件与目标数据库相关联。
RMAN 命令(例如 BACKUP 、 RESTORE 和 CROSSCHECK )适用于任何可访问的备份。
例如,对于 RECOVER COPY 操作,RMAN 仅将与数据库关联的镜像副本视为符合恢复条件。
RMAN 认为磁盘和磁带上的增量备份符合恢复镜像副本的条件。
在数据库恢复中,RMAN 仅将与数据库关联的磁盘备份和磁带上的所有文件视为符合恢复条件。
使用 RMAN 在 Data Guard 配置中备份和恢复文件
恢复管理器 (RMAN) 可用于备份和恢复备用数据库。
我们在物理备用数据库上进行的备份可用于主数据库或者另一个备用数据库。
在包含物理备用数据库的 Data Guard 配置中使用 RMAN 时,需要恢复目录。
主数据库和所有备用数据库的元数据存储在恢复目录中。
Oracle 最高可用性架构 (MAA) 最佳实践建议在主数据库和备用数据库上进行备份以:
- 减少平均恢复时间 (MTTR)
- 处理多个站点的中断
- 避免在切换和故障转移期间引入新的站点做法
将备份卸载到物理备用
RMAN 可以备份备用数据库及其关联的归档重做日志。
数据文件、控制文件和归档重做日志的备用备份可以与主数据库备份完全互换。
执行RESTORE命令可以将备数据文件的备份恢复到主库,也可以将主数据文件的备份恢复到备库。
主数据库和备用数据库必须使用相同的恢复目录。
请注意,如果主数据库已经注册,则不需要在目录中注册备用数据库;只需连接到备用数据库并执行 BACKUP 命令。
使用物理备库数据文件恢复主库上的数据文件
要使用物理备用数据库中的当前数据文件来恢复主数据库上的数据文件:
- 连接备库作为目标库:
RMAN> CONNECT TARGET sys/oracle@london
作为辅助数据库连接到主数据库:
RMAN> CONNECT AUXILIARY sys/oracle@boston
- 将备用主机上的数据文件通过网络备份到主要主机上的某个位置,如下例所示:
RMAN> BACKUP AS COPY DATAFILE 5 BACKUP AS COPY DATAFILE 5 AUXILIARY FORMAT '/u02/oracle/restore/df5copy.dbf';
- 退出 RMAN 会话。
再次调用 RMAN 并连接到主数据库作为目标数据库并连接到恢复目录,如下例所示:
RMAN> CONNECT TARGET sys/oracle 4U@boston CATALOG rcowner/rcpass@em12;
- 使用 CATALOG DATAFILECOPY 命令对该数据文件副本进行编目,以便 RMAN 可以使用它。
RMAN> CATALOG DATAFILECOPY '/u02/oracle/restore/df5copy.dbf';
- 使用SWITCH DATAFILE 命令切换数据文件副本,使编目文件成为当前数据文件。
RUN { SET NEWNAME FOR DATAFILE 5 TO '/u02/oracle/restore/df5copy.dbf'; SWITCH DATAFILE 5; RECOVER DATAFILE 5; }
使用备份恢复主数据库上的数据文件
调用 RMAN 并连接到主数据库和恢复目录。
- 执行 RESTORE DATAFILE 命令恢复数据文件。
RMAN> CONNECT TARGET sys@boston RMAN> RESTORE DATAFILE 5,6; RMAN> RECOVER DATAFILE 5,6;
- 执行RECOVER DATAFILE 命令恢复数据文件。
RMAN> CONNECT TARGET sys@boston RMAN> RESTORE TABLESPACE tbs_name1,tbs_name2; RMAN> RECOVER TABLESPACE tbs_name1,tbs_name2;
配置每日增量备份
Oracle 建议我们实施每日增量备份策略。
在此备份策略中,数据文件镜像副本与最新的增量备份一起前滚。
RMAN 使用生成的最新数据文件镜像副本进行介质恢复。
在第一天执行完整的数据库备份,然后在第二天执行增量备份。
归档重做日志可用于将数据库恢复到任一天的任何时间点。
从第三天开始,将前一天的增量备份与数据文件副本合并,并进行当前的增量备份,从而可以快速恢复到最后一天内的任何点。
重做日志可用于将数据库恢复到当天的任何时间点。
我们可以创建一个 RMAN 脚本来获取所有备份,如下所示:
- RESYNC CATALOG FROM DB_UNIQUE_NAME ALL :从恢复目录已知的 Data Guard 配置中的所有数据库站点(主数据库和其他备用数据库)重新同步信息。
- RECOVER COPY OF DATABASE WITH TAG 'dgbkup' :通过应用前一天进行的级别 1 增量备份来前滚数据库的级别 0 副本。
- 在第 1 天,没有前滚,因为没有增量 1 级备份。
- 在第 2 天没有前滚,因为此时只有 0 级增量备份。
- 在第 3 天和接下来的几天,使用前一天创建的 1 级增量备份执行前滚。
- BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'dgbkup' DATABASE :创建一个新的 1 级增量备份。
- 在第 1 天,创建 0 级增量备份。
- 在第 2 天和接下来的几天创建 1 级增量备份
- BACKUP DEVICE TYPE DISK ARCHIVELOG ALL :将归档日志备份到磁盘。
- BACKUP BACKUPSET ALL :备份作为增量备份的结果创建的任何备份集。
- DELETE ARCHIVELOG ALL :根据 CONFIGURE ARCHIVELOG DELETION POLICY 命令设置的日志删除策略删除归档日志。如果归档日志位于闪回恢复区中,则在需要更多可用磁盘空间时会自动删除它们。因此,仅当我们明确希望每天删除日志时才需要使用此命令。
可以创建单个 RMAN 脚本来实现此策略:
RESYNC CATALOG FROM DB UNIQUE NAME ALL; RECOVER COPY OF DATABASE WITH TAG 'dgbkup'; BACKUP DEVICE TYPE DISK INCREMENTAL LEVEL 1 FOR RECOVER OF COPY WITH TAG 'dgbkup' DATABASE; BACKUP DEVICE TYPE SBT ARCHIVELOG ALL; BACKUP BACKUPSET ALL; DELETE ARCHIVELOG ALL;
排除备用数据库
默认情况下,RECOVER … BLOCK 命令尝试从物理备用数据库中检索一个好的块。
我们可以通过在命令中指定 EXCLUDE STANDBY 子句来禁用对物理备用数据库的搜索。
当我们知道存在网络问题或者备用数据库不可用的其他原因时,我们可以使用 EXCLUDE STANDBY 子句。
RECOVER BLOCK … EXCLUDE STANDBY
在 Data Guard 配置中使用 RMAN 恢复目录
在 Data Guard 配置中,我们应该使用 RMAN 恢复目录。
这允许将在一台数据库服务器上进行的备份还原到另一台数据库服务器。
如果我们只使用控制文件作为 RMAN 存储库,主数据库将不知道在备用数据库上进行的备份。
设置持久配置设置
使用 CONFIGURE RMAN 命令在 Data Guard 配置中注册和配置数据库设置。
RMAN 使用 DB UNIQUE NAME 初始化参数来区分 Data Guard 配置中的数据库。
我们可以使用带有 FOR DB_UNIQUE_NAME 子句的 CONFIGURE 命令为 Data Guard 配置中的数据库创建持久配置,而无需作为 TARGET 连接到数据库。
使用 SET DBID 命令在 RMAN 会话中设置 DBID,以便当 RMAN 未作为 TARGET 连接到 Data Guard 环境中的数据库时,我们可以配置备用数据库。
我们还可以使用此技术为尚未创建的备用数据库创建配置。
RMAN> configure controlfile autobackup on for db_unique_name boston; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored
在 Data Guard 环境中为数据库创建或者更改配置时,RMAN 必须连接到恢复目录。
配置持久设置:示例
[oracle@host01 ~]$ rman target sys/oracle_4U@boston catalog rcowner/rcpass@emrep Recovery Manager: Release 12.1.0.1.0 - Production on Wed Dec 18 16:04:49 2013 Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved. connected to target database: BOSTON (DBID=2524687871, not open) connected to recovery catalog database RMAN> configure controlfile autobackup on; new RMAN configuration parameters: CONFIGURE CONTROLFILE AUTOBACKUP ON; new RMAN configuration parameters are successfully stored RMAN> show all for db_unique_name boston; RMAN configuration parameters for database with db_unique_name BOSTON are: CONFIGURE RETENTION POLICY TO REDUNDANCY 1; # default CONFIGURE BACKUP OPTIMIZATION OFF; # default CONFIGURE DEFAULT DEVICE TYPE TO DISK # default CONFIGURE CONTROLFILE AUTOBACKUP ON; # default CONFIGURE CONTROLFILE AUTOBACKUP FORMAT FOR DEVICE TYPE DISK TO '%F'; # default CONFIGURE DEVICE TYPE DISK PARALLELISM 1 BACKUP TYPE TO BACKUPSET; # default CONFIGURE DATAFILE BACKUP COPIES FOR DEVICE TYPE DISK TO 1; # default CONFIGURE ARCHIVELOG BACKUP COPIES FOR DEVICE TYPE DISK TO 1 # default CONFIGURE MAXSETSIZE TO UNLIMITED; # default CONFIGURE ENCRYPTION FOR DATABASE OFF; # default CONFIGURE ENCRYPTION ALGORITHM 'AES128'; # default CONFIGURE COMPRESSION ALGORITHM 'BASIC' AS OF RELEASE 'DEFAULT' OPTIMIZE FOR LOAD TRUE ; # default CONFIGURE RMAN OUTPUT TO KEEP FOR 7 DAYS; #default CONFIGURE ARCHIVELOG DELETION POLICY TO NONE; # default CONFIGURE SNAPSHOT CONTROLFILE NAME TO '/u01/app/oracle/product/12.1.0/dbhome_1/dbs/snapcf_boston.f'; # default
块介质恢复的增强功能
在以前的 Oracle 数据库版本中,如果块损坏,我们必须识别损坏的块并通过执行 RECOVER … BLOCK 命令手动执行块介质恢复。
自动块修复功能使块介质恢复能够使用物理备用数据库中的块来执行恢复,而无需手动干预。
物理备用数据库必须启用实时查询才能利用此功能。
当在配置了实时查询的物理备用数据库上执行查询并检测到损坏块时,将从主数据库中检索一个有效块。
在备用数据库上的恢复操作期间检测到损坏的块时,恢复过程将从主数据库中检索有效块。
此功能通过在检测到损坏时自动修复损坏,减少了由于块损坏而无法访问生产数据的时间。
因为使用来自实时同步物理备用数据库的最新好块,而不是来自磁盘或者磁带备份或者闪回日志的块,所以减少了块恢复时间。
注意:自动块修复仅适用于物理块损坏(当校验和无效,块包含全零或者块头破裂时)。
自动块修复还启用物理备用数据库上损坏块的自动修复。
块介质恢复是通过使用从主数据库中检索到的块来执行的。
必须在物理备用数据库上启用实时查询才能利用此功能。
创建恢复目录
- 配置要存储恢复目录的数据库。
a)
确定将其中安装恢复目录架构的数据库。
请务必考虑我们对此数据库的备份和恢复过程。
湾为恢复目录创建一个表空间,它成为恢复目录所有者的默认表空间。
恢复目录架构所需的空间量取决于目录监控的数据库数量。
对于在恢复目录中注册的每个数据库,典型的空间要求是 15 MB。
SQL> CREATE TABLESPACE rc_ts DATAFILE SIZE 30M;
- 创建一个用户作为恢复目录所有者。
将此用户的默认表空间设置为我们为恢复目录创建的表空间。
请务必在此表空间上为用户提供 UNLIMITED 配额。
创建用户后,将 RECOVERY_CATALOG_OWNER 角色授予用户。
SQL> CREATE USER rcowner IDENTIFIED BY rcpass 2 TEMPORARY TABLESPACE temp 3 DEFAULT TABLESPACE rc_ts 4 QUOTA UNLIMITED ON rc_ts;
SQL> GRANT recovery_catalog_owner TO rcowner;
- 使用 CREATE CATALOG RMAN 命令在目录所有者的默认表空间中创建目录表。
$ rman RMAN> CONNECT CATAL RMAN> CONNECT CATALOG rcowner/rcpass rcowner/rcpass RMAN> CREATE CATALOG;