维护 RMAN 存储库
RMAN 存储库是有关目标数据库的元数据的集合,RMAN 使用这些元数据来指导其备份、恢复和维护操作。您可以创建恢复目录库来存储这些信息,或者让 RMAN 将其专门存储在目标数据库的控制文件中。虽然 RMAN 仅使用控制文件即可进行所有主要的备份和恢复操作,但是还有一些 RMAN 命令只有在使用恢复目录库时才能运行。
表:任务和命令 显示了维护 RMAN 存储库所需的任务和用于执行任务的存储库维护命令的子集。这些命令中有的可能并非适用于 RMAN 的所有版本。
表:任务和命令
任务
|
用于执行任务的命令
|
---|
在恢复目录库中注册数据库
|
在使用有恢复目录库的 RMAN 之前,请在恢复目录库中注册目标数据库。要进行注册,应启动并装入目标数据库但不打开它。在 RMAN 提示符下,运行 register database 命令。
|
重置恢复目录库中的实体
|
reset database 命令可使 RMAN 在恢复目录库中创建一个新的数据库实体记录。
|
交叉检查 RMAN 存储库中的信息
|
由于 NetBackup 可以独立于 Oracle 使映像失效,因此 RMAN 存储库中可能包含过期信息。运行 RMAN 交叉检查,以确保恢复目录库或控制文件中的数据与备份映像目录库中的数据同步。交叉检查将查询 NetBackup 是否存在每个备份片,然后在 RMAN 存储库中将其标记为可用或已失效。使用以下命令之一检查指定的文件。需要运行单独的命令来删除映像或存储库记录。
change...crosscheck 命令将查询 NetBackup 以确定某备份片是否可用。如果不可用,RMAN 会将该备份片标记为已失效。如果某备份片过去失效,但现在又可用了,则 RMAN 将其标记为可用。该命令的语法如下: change backuppiece {primary_keylist |
filename_list | tag} crosscheck;
change backupset {primary_keylist} crosscheck;
执行 RMAN 交叉检查的时间长度取决于以下几种因素: 正在进行交叉检查的 RMAN 备份片数目。 已超过其 NetBackup 保留期限的 RMAN 备份片数目(如果 NetBackup 而不是 RMAN 使这些备份片失效)。 RMAN 备份片名称的格式以及 Veritas 建议的 _%t 是否出现在格式语句的末尾。 Oracle 客户端的数量。 任何种类的 NetBackup 策略的数量。 NetBackup 保留备份的时间长度以及 NetBackup 目录库中的客户端的备份映像数。 RMAN 目录库维护操作的预定时间以及操作之间的时间长度。 NetBackup 主服务器上的主机名和反向主机名解析的速度和准确性。 NetBackup 主服务器在每个交叉检查请求期间执行的操作的数量和复杂性。 正常的性能。
|
使用 Oracle Copilot 共享执行交叉检查
|
如果在 RMAN 之外删除某 Oracle Copilot 共享上的文件,则对该共享的后续增量式合并备份将失败。必须在下一次备份之前对共享执行 RMAN 交叉检查,以防止多次失败。此版本的 RMAN 交叉检查与其他交叉检查示例稍有不同,因为需要指定 type disk,而非 type SBT_TAPE。运行 RMAN 交叉检查时,默认值为 NetBackup_policyname。但是,如果在 Oracle 选项卡中更改“数据文件副本标记”,则必须使用该标记名称替代 NetBackup_policyname。命令语法示例(使用默认值 NetBackup_policyname)如下所示:
Run {
Allocate channel ch00 type 'disk';
crosscheck backup tag <Netbackup_policyname>;
delete noprompt expired backup;
crosscheck copy <Netbackup_policyname>;
delete noprompt expired copy;
release channel ch00;
}
|
删除过时的备份
|
使用 DELETE OBSOLETE 命令可删除不再需要的备份以满足指定的可恢复性要求。您可以按配置的默认保留策略或 DELETE OBSOLETE 选项指定的其他保留策略,删除过时的备份片。与 DELETE 命令的其他形式一样,删除的文件将从备份介质中删除(在 NetBackup 中失效)。然后将其从恢复目录库中删除,并在控制文件中标记为 DELETED。
如果指定 DELETE OBSOLETE 命令(不带任何参数),则 RMAN 将删除当前配置的保留策略定义的所有过时的备份。例如:
Allocate channel for maintenance type 'SBT_TAPE';
DELETE OBSOLETE;
您还可以使用带有 DELETE 的 REDUNDANCY 或 RECOVERY WINDOW 子句删除特定保留策略(而不是已配置的默认策略)下过时的备份:
DELETE OBSOLETE REDUNDANCY = 3;
DELETE OBSOLETE RECOVERY WINDOW OR 7 DAYS;
|
删除已失效的备份
|
delete expired backupset 命令将仅对恢复目录库中发现的已失效备份片进行操作。RMAN 会从恢复目录库以及备份介质中删除这些备份片(使其在 NetBackup 中失效)。
要从恢复目录库中删除某数据库的已失效备份集,请启动 RMAN 并连接到目标和恢复目录库数据库。在 RMAN 命令提示符下,键入以下命令:
allocate channel for maintenance type
'SBT_TAPE';
delete expired backupset of database;
crosscheck 和 delete backupset 命令将对象列表仅限于操作的对象。这些限制针对指定的 Oracle 设备类型(磁盘或 SBT 磁带)、对象类型(已存档日志或数据库文件)和日期范围。
|
重新同步恢复目录库
|
RMAN 会将恢复目录库与目标数据库的当前控制文件或备份控制文件进行比较。然后用缺少的信息或已更改的信息更新目录库。
如果是在 ARCHIVELOG 模式下运行,请执行以下操作: 定期重新同步恢复目录库,因为当发生日志切换或存档重做日志时,恢复目录库不会自动进行更新。
在对目标数据库的物理结构进行任何更改之后,也必须重新同步恢复目录库。与日志存档操作一样,当更改物理架构时,恢复目录库不会自动更新。
当目录数据库控制文件可用时,RMAN 的 backup、copy、restore 和 switch 命令会自动更新恢复目录库。当执行这些命令中的任何一个时,恢复目录库数据库均是可用的。
如果运行 backup 或 copy 命令时恢复目录库不可用,则应对其手动进行重新同步。
要重新同步恢复目录库,请启动 RMAN 并运行 resync catalog 命令。
|
更改备份集或文件副本的可用性
|
您可能需要定期通知 RMAN:备份集、备份片、数据文件副本或存档的重做日志的状态已更改。RMAN change 命令使您可进行各种有用的记录更改。
change ... uncatalog 命令的功能是从恢复目录库中删除对备份片、数据文件副本或存档日志的引用。此命令仅在有恢复目录库时才起作用。
change ... delete 命令的功能是从控制文件和恢复目录库中删除对备份片、数据文件副本或存档日志的引用。该命令以物理方式删除文件。不管是否有恢复目录库,此命令都起作用。
change ... crosscheck 命令的功能是从控制文件和恢复目录库中删除对备份片、数据文件副本或存档日志的引用。当该文件不再存在时,将删除这些引用。不管是否有恢复目录库,此命令都起作用。
change ... unavailable 命令将备份片、数据文件副本或存档日志标记为不可用。此命令仅在有恢复目录库时才起作用。
|
验证对备份的还原
|
还原验证会从存储 (NetBackup) 中检索备份片并检查检索到的备份片是否完好无损。但是,还原验证会丢弃这些备份片,而不将内容保存到数据库中。
如果您希望 RMAN 选择要测试的备份,请使用 restore ... validate。
如果您希望指定要测试的备份集,请使用 validate backupset。
|