适用于:
Oracle Database Cloud Exadata Service - 版本 N/A 和更高版本Gen 1 Exadata Cloud at Customer (Oracle Exadata Database Cloud Machine) - 版本 N/A 和更高版本
Oracle Database Cloud Schema Service - 版本 N/A 和更高版本
Oracle Database Exadata Express Cloud Service - 版本 N/A 和更高版本
Oracle Database Backup Service - 版本 N/A 和更高版本
本文档所含信息适用于所有平台
用途
Purpose
注意:Oracle 11G 中新增了功能,但 Oracle 10G 步骤对 11G 仍然有效。
有关 11g 新功能的更多详细信息,请参阅: Note 809867.1 RMAN 11gR1 : New Features
本文档介绍 Oracle 10g 和 11g Recovery Manager (RMAN) 的基本概念,Oracle 推荐您使用此工具进行备份和恢复。由于 RMAN 具有极大的灵活性,我们无法在此涉及所有详细信息。本文仅概述了需要考虑和注意的事项。
建议查看以下文档,了解更多详细信息:
Oracle Database Backup and Recovery Reference
Oracle Database Backup and Recovery Quick Start Guide
Oracle Database Backup and Recovery Basics
Oracle Database Backup and Recovery Advanced User's Guide
适用范围
本文适用于熟悉备份和恢复概念并有兴趣使用 RMAN 实施服务器管理的备份和恢复的 DBA
RMAN 备份和恢复可通过 Enterprise Manager 执行。该工具在本文中将不予讨论。
详细信息
RMAN环境概要
与数据库一起安装的 Recovery Manager (RMAN) 是 Oracle 数据库客户端,它执行数据库的备份和恢复任务,并自动化备份策略的管理。 这大大简化了数据库的备份、还原和恢复。
RMAN 环境由用于备份数据的实用程序和数据库组成。 RMAN的环境必须包括:
- 目标数据库. 这是RMAN备份的数据库.
- RMAN 客户端与 SQL*Plus 一样,是面向命令行的数据库客户端,具有自己的命令语法。从 RMAN 客户端发出 RMAN 命令和一些 SQL 语句,以执行和报告备份和恢复操作。.
在某些环境中,还使用以下可选组件:
- 闪存恢复区(flash recovery area): 数据库可以存储和管理与备份和恢复相关文件的磁盘位置.
- 媒体管理软件(media management software): RMAN与备份设备(如磁带机)接口所需的媒体管理器供应商提供的软件.
- 恢复目录数据库(recovery catalog database): 用于记录一个或多个目标数据库的 RMAN 活动的单独数据库架构.
决定是否使用闪存恢复区域 (FRA)
建议您使用 FRA 存储尽可能多的备份和恢复相关文件,包括磁盘备份和归档日志。
Oracle 数据库的某些备份和恢复功能(如 Oracle Flashback Database 和保证恢复点)需要使用 FRA。 但是,即使这些功能使用 FRA,也不会强制使用 FRA 保存所有与恢复相关的文件。
但是,即使不是必须要使用FRA,与其他磁盘备份存储方法相比,FRA也有很多优点。 从闪存恢复区域(通过 RMAN
和媒体管理器)移动到磁带的备份将保留在磁盘上,直到需要空间存储其他所需文件,从而减少从磁带恢复备份的需要。
同时,obsolete文件不再需要满足恢复目标,备份到磁带上的文件将成为可被删除的对象,并在需要空间时删除。如果需要空间,则 Oracle
将管理这些删除。DBA 不再需要手动删除旧备份,因此 DBA 错误删除冗余集文件的可能性很小。 请注意,如果写入 FRA 的备份未通过 RMAN
和媒体管理器复制到磁带中,则不会自动删除obsolete备份,并且需要 Oracle 10g 之前的清理方法。
知识库文档参考:
Note:305817.1 FAQ - Flash Recovery Area feature of 10G
决定是否使用Recovery Catalog
RMAN 在 RMAN
资料档案库中保存目标数据库及其备份和恢复操作的元数据。此外,RMAN还存储有关自己的配置设置、目标数据库schema、归档重做日志和磁盘或磁带上的所有备份文件的信息。
RMAN 的 LIST、REPORT 和 SHOW 命令显示 RMAN 资料档案库信息。
RMAN 资料档案库数据的主存储始终是目标数据库的控制文件。CONTROL_FIEL_RECORD_KEEP_TIME 初始化参数控制备份记录在控制文件中保存的时间,直到这些记录被重新使用以保存有关最近备份的信息。
也可以将 RMAN 资料档案库数据的另一个副本保存到Recovery Catalog中。
使用恢复目录可以保存 RMAN 资料档案库信息,以便在丢失控制文件后还原和恢复。 (备份控制文件可能不包含有关最近可用的备份的完整信息.) 由于控制文件记录数量有限,恢复目录可以存储比控制文件更广泛的备份历史记录。
除了 RMAN 资料档案库记录外,Recovery Catalog还可以保存 RMAN 保存的脚本,以及用于常见备份任务的 RMAN 命令序列. 将脚本集中存储在恢复目录中比处理命令文件更方便.
除存储脚本外,RMAN的所有功能无论是否使用 recovery catalog,均能正常工作。
Oracle 12c 文档参考:
How to create recovery catalog in 12c
RMAN的启动和结束
RMAN客户端是操作在系统的命令提示下发出rman命令后启动。
要执行备份和恢复任务,RMAN 必须连接到目标数据库(用
SYSDBA 权限)。 如果使用Recovery Catalog数据库话,RMAN也可以连接到Recovery
Catalog数据库。可使用命令行选项或使用 CONNECT 命令指定目标和Recovery Catalog数据库。
此命令指示在启动时将 RMAN 连接到目标数据库和Recovery Catalog:
% rman TARGET / CATALOG <catalog_schema>/password@<catalog service>
不使用Recovery Catalog而连接到目标数据库:
% rman TARGET SYS/<password>@<target service>
不连接数据库而启动RMAN:
% rman
启动后,RMAN 会显示"RMAN>"提示符.
设置 RMAN 环境的持久性设置
使用 RMANCONFIGURE 命令在 RMAN 环境中创建持久性设置。此设置适用于所有后续操作,即使退出和重新启动 RMAN。这些设置可以指定磁盘和 SBT 通道的行为、备份目标目录、影响备份策略的政策等。
此命令显示所有可配置的设置:
RMAN> SHOW ALL;
知识库文档:
Note 305565.1 Persistent Controlfile Configurations for RMAN in 9i and 10g
控制文件和 Spfile的备份
每次更改 RMAN 备份和数据库结构时,都可以自动备份控制文件,以保护 RMAN 资料档案库. 使用Spfile时,也会进行备份。 在没有recovery catlog的情况下使用RMAN时,建议将控制文件的自动备份设定为ON。 以下命令将 RMAN 配置为自动创建这些控制文件的备份:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP ON;
默认情况下,RMAN 会自动生成控制文件的自动备份名称,并在定义时将其保存到 FRA 中。 以下命令将 RMAN 配置为将控制文件自动备份写入 /mybackupdir 目录:
RMAN> CONFIGURE CONTROLFILE AUTOBACKUP FORMAT
FOR DEVICE TYPE DISK TO '/<PATH>/cf%F';
格式字符串的 %F 元素将 DBID、日、月、年、序号组合以生成唯一的文件名。%F 必须包含在任何控制文件自动备份格式中。
挂载(mount)或打开(open)数据库时,可以备份控制文件。 RMAN 使用快照控制文件确保读取的一致性。 如果 CONFIGURE
CONTROLFILE AUTOBACKUP 为 ON(缺省情况下为 OFF),则在每次备份和数据库结构更改后,RMAN
会自动备份控制文件和服务器参数文件。控制文件自动备份包含有关上次备份的元数据,这对于灾难恢复至关重要。
建议设置控制文件的自动备份,如果所有控制文件丢失,并且没有正在使用的recovery catalog,则这是 RMAN
可以恢复控制文件备份的唯一方法。
如果未设置自动备份功能,则必须通过以下方法之一手动备份控制文件:
- 执行 BACKUP CURRENT CONTROLFILE
- 使用BACKU命令的 INCLUDE CURRENT CONTROLFILE选项,将控制文件的备份包含在所有备份中
- 备份数据文件(datafile) 1, 如果控制文件自动备份设置为 OFF,则 RMAN 会自动将控制文件和 SPFILE 包含在数据文件 1 的备份中
手动备份控制文件与自动备份控制文件不同。 手动备份时,控制文件备份中仅包含当前 RMAN 会话中用于备份的 RMAN 资料档案库数据,因此无法自动恢复手动备份的控制文件。
备份数据库文件
使用 RMAN BACKUP 命令备份文件。 可以预先设置默认设备和通道。 BACKUP 命令根据请求的备份类型将数据备份到已设置的默认设备和通道。
如果指定 BACKUP AS COPY,则 RMAN 将文件复制为图像副本,磁盘上创建的数据库文件的位对位副本。这些文件与使用操作系统命令(如
Unix 的 cp 或 Windows 的 COPY)创建的相同文件的副本相同。 但是,BACKUP AS COPY 将被记录在 RMAN
资料档案库中,并且 RMAN 可以将其用于还原操作。无法在磁带上创建图像副本
此命令创建数据库中的所有数据文件的图像副本备份:
RMAN> BACKUP AS COPY DATABASE;
如果指定 BACKUP AS BACKUPSET,则 RMAN 将备份存储到备份集中。 备份集由一个或多个备份片段组成,包括要备份的物理文件数据。 此备份集以只有 RMAN 才能访问的形式写入。 只有RMAN才能创建和还原备份集。 备份集可以写入磁盘或磁带,且这是RMAN可用于将备份写入磁带的唯一的一种备份类型。.
以下命令使用已配置的通道,以备份集的形式,创建数据库备份和归档日志到磁带上:
RMAN> BACKUP DEVICE TYPE sbt DATABASE PLUS ARCHIVELOG;
注意:
将数据文件备份为备份集形式到磁盘上,可节省磁盘空间和时间。这是因为RMAN将跳过对未使用的数据文件块的备份。备份集在写入磁盘后,可以使用
BACKUP BACKUPSET 命令移动到磁带中。 有关未使用块的压缩说明,请参见 Oracle Database Backup and
Recovery Reference。
个别文件的备份
可以使用多种选项备份个别表空间、数据文件和控制文件、服务器参数文件和备份集,如下例所示:
RMAN> BACKUP ARCHIVELOG from time 'sysdate-2';
RMAN> BACKUP TABLESPACE system, users, tools;
RMAN> BACKUP AS BACKUPSET DATAFILE
'ORACLE_HOME/<PATH>/users01.dbf',
'ORACLE_HOME/<PATH>/tools01.dbf';
RMAN> BACKUP DATAFILE 1,3,5;
RMAN> BACKUP CURRENT CONTROLFILE TO '/<PATH>/curr_cf.copy';
RMAN> BACKUP SPFILE;
RMAN> BACKUP BACKUPSET ALL;
备份选项
以下是常用的 BACKUP 命令选项:
参数 例 说明
FORMAT FORMAT'/tmp/%U' 指定备份片段和副本的位置和名称。必须使用替换变量生成唯一的文件名。
参数 例 说明
TAG TAG 'monday_bak' 指定用户定义的字符串作为备份标签。如果未指定标签,则 RMAN 会为缺省标签指定日期和时间。
以下 BACKUP 命令说明了这些选项:
RMAN> BACKUP FORMAT='AL_%d/%t/%s/%p' ARCHIVELOG LIKE '%arc_dest%';
RMAN> BACKUP TAG 'weekly_full_db_bkup' DATABASE MAXSETSIZE 10M;
RMAN> BACKUP COPIES 2 DEVICE TYPE sbt BACKUPSET ALL;
Incremental Backups :
如果指定BACKUP INCREMENTAL, RMAN将创建数据库的增量备份。
增量备份以块为单位捕获自上次增量备份以来的数据库中的变更内容。 增量备份策略的起点为Level 0 增量备份,备份数据库中的所有块。 Level
1 增量备份定期执行,仅包含自上次增量备份以来更改的块。这些可以是累积的(包括自最近Level 0
备份以来更改的所有块)或差异的(包括自最近level 0 或Level 1 增量备份以来更改的所有块)。
增量备份通常比完整数据库备份(full
database backup)小,创建速度更快。 从增量备份恢复比仅使用重做日志恢复更快。从增量备份还原(restore)时,以 level
0 备份为起点,基于 1 级备份更新已更改的块,以尽可能避免每次重新应用更改。 使用增量备份进行恢复不需要额外的努力。如果有可用的增量备份,则
RMAN 在恢复期间使用增量备份。
Enterprise Edition 包含 RMAN 增量备份的变更跟踪功能。通过将每个数据文件中的更改的块记录在变更跟踪文件(change tracking file)中,以提高增量备份性能。如果启用更改跟踪,则 RMAN 将使用更改跟踪文件识别已更改的块以进行增量备份,因此无需扫描数据文件中的所有块。
逐步更新的备份:
RMAN
逐步更新的备份功能可帮助实现更有效的增量备份。 Level 1 备份的更改可用于滚动映像复制 level 0 的增量备份,
因此包含创建Level 1增量备份时对应的SCN为止的所有变更。使用更新的level 0 增量备份恢复时速度更快, 因为level 1
增量备份的所有更改都已应用。
备份归档重做日志
归档重做日志是媒体恢复成功的关键。定期备份。可以使用 BACKUP ARCHIVELOG 备份日志,或备份数据文件和控制文件时,指定 BACKUP...PLUS ARCHIVELOG 备份日志。
在 RMAN 提示符下执行 BACKUP ARCHIVELOG 命令,即可备份归档重做日志。 在本示例中,使用已配置的磁盘或磁带(sbt)通道备份所有归档重做日志备份的每个日志序号的副本:
RMAN> BACKUP ARCHIVELOG ALL;
即使重做日志被归档到多个目标,并且使用 RMAN 备份归档重做日志,RMAN会选择归档重做日志文件的一个副本到备份集里面。 (相同日志序号的日志相同,因此无需包含多个副本。)
还可以按时间、SCN 或日志序号指定归档重做日志的范围,如下例所示::
RMAN> BACKUP ARCHIVELOG
FROM TIME 'SYSDATE-30' UNTIL TIME 'SYSDATE-7';
执行 BACKUP ARCHIVELOG 命令时指定 DELETE INPUT 或 DELETE ALL INPUT 子句可在备份后删除归档日志,从而无需手动删除归档重做日志。 使用 DELETE INPUT 命令,RMAN 仅删除为备份集选择的归档重做日志的特定副本。 使用DELETE ALL INPUT,RMAN将从所有日志归档目标中删除备份的每个归档重做日志文件。
还原和恢复数据库文件
使用 RESTORE 和 RECOVER 命令还原和恢复物理数据库文件。还原数据文件时,根据恢复操作的需要从备份中获取数据文件。恢复是将重做日志的变更和增量备份应用于还原的数据文件,并将数据文件恢复到到所需的 SCN(时间点)或当前时间。
恢复整个数据库 :
对整个数据库中使用 RESTORE DABASE 和 RECOVER DABASE 命令。 例如:
RMAN> STARTUP FORCE MOUNT;
RESTORE DATABASE;
RECOVER DATABASE;
ALTER DATABASE OPEN;
注意,还原或恢复整个数据库时,数据库不能打开。
恢复当前表空间:
打开数据库后,对个别的表空间中使用 RESTORE TABLESPACE 和 RECOVER TABLESPACE 命令。将需要恢复的表空间设置为离线状态,还原并恢复表空间,并将恢复的表空间设置为联机状态。以下步骤将恢复用户(users)表空间:
RMAN> SQL 'ALTER TABLESPACE users OFFLINE';
RESTORE TABLESPACE users;
RECOVER TABLESPACE users;
SQL 'ALTER TABLESPACE users ONLINE;
恢复当前数据文件 :
打开数据库后,对个别当前数据文件使用 RESTORE DATAFILE 和 RECOVER DATAFILE 命令。 将需要恢复的数据文件设置为离线,还原并恢复数据文件,并将数据文件设置为联机。例如,还原和恢复数据文件 7:
RMAN> SQL 'ALTER DATABASE DATAFILE 7 OFFLINE';
RESTORE DATAFILE 7;
RECOVER DATAFILE 7;
SQL 'ALTER DATABASE DATAFILE 7 ONLINE';
恢复个别数据块:
RMAN 可以恢复个别损坏的数据文件块。 当 RMAN 执行备份时,对文件执行完整扫描,损坏的块将显示在
V$DATABASE_BLOCK_CORTRUCTION视图中。 损坏通常会在告警日志、跟踪文件或 SQL 查询结果中报告。 使用BLOCK
RECOVER修复所有损坏的块:
RMAN> BLOCKRECOVER CORRUPTION LIST;
也可以恢复单独的块,如下例所示:
RMAN> BLOCKRECOVER DATAFILE 7 BLOCK 233, 235 DATAFILE 4 BLOCK 101;
注: 只能将整个数据库恢复到某个时间点。表空间恢复到某个时间点需要另外的步骤。
Data Recovery Advisor (DRA)
RMAN 使用 Data Recovery Advisor 提供有关特定故障的信息,并为特定故障提供适当的恢复计划建议。
有关 DRA 的详细信息,请参见:
Note 1579579.1 Primary Note For Oracle Data Recovery Advisor (DRA)
RMAN操作报告
RMAN LIST 和 REPORT 命令基于 RMAN 资料档案库生成备份活动的报告。 使用 SHOW ALL 显示当前的RMAN设定。
备份列表
使用 LIST 显示有关备份集、代理副本和存储库中记录的图像副本的信息。LIST 命令显示可执行 CROSSCHECK 和 DELETE 命令的文件。 使用此命令可以查看:
- 在 RMAN 资料档案库中没有可用(AVAILABLE)状态的备份和副本
- 可用于还原操作的数据文件的备份和副本
- 指定的归档日志、备份集、备份片段、控制文件副本、数据文件副本和代理副本
- 备份和副本受标签、完成时间、恢复能力或设备的限制
- 资料档案库中已知的指定的数据库或所有数据库的incarnation
- 在recovery catalog中的Stored scripts
数据库文件和备份报告
REPORT 命令执行比 LIST 更复杂的分析。 使用 REPORT 命令回答以下问题:
- 需要备份的文件?
- 哪些文件暂时没有备份?
- 因无法恢复的操作而无法恢复的文件?
- 可删除的备份文件?
- 以前数据库的物理架构是什么?
Oracle database 12c Backup and Recovery Reference
管理 RMAN 资料档案库
RMAN 资料档案库元数据始终记录在目标数据库的控制文件中。 也可以在单独的数据库中创建recovery catalog,RMAN 也会记录元数据。
监控控制文件记录 :
如果不使用recovery catalog,则 RMAN 控制文件记录将被覆盖。在目标数据库的参数文件中设置此初始化参数,以确定保存记录的时间:
CONTROL_FILE_RECORD_KEEP_TIME = <number_of_days_to_keep>
您可以设置 RMAN 的保留策略,以确定哪些备份已过时(obsolete)。 这样,您就可以从资源库中删除不再满足保留要求的文件。 此策略可以基于恢复窗口(可恢复到过去的最大天数)或冗余(要保存的每个备份文件的副本数)。
CONFIGURE 命令的 RECOVERY WINDOW 参数指定当前时间与可恢复的最早时间之间的天数。 如果 RMAN
位于恢复窗口中,则不会认为完全备份或level 0 的增量备份为无效。 此外,RMAN 还保留窗口中的随机点恢复所需的所有归档日志和level 1
增量备份。
在 RMAN 提示符下执行 CONFIGURE RETENTION POLICY 命令。此示例说明如何将数据库恢复到上周的任意的时间点:
RMAN> CONFIGURE RETENTION POLICY TO RECOVERY WINDOW OF 7 DAYS
CONFIGURE RETENTION POLICY 命令的 REDUNDANCY 参数指定 RMAN 需要保存的每个数据文件和控制文件的备份数。 也就是说,如果特定数据文件或控制文件的备份数超过 REDUDIANCY 设置,则认为多余的备份已过时。 默认保留策略为 REDUNDANCY=1。
随着备份的增加,RMAN 会跟踪哪些备份需要保留,哪些备份已过时。 RMAN 保留恢复非过时(non-obsolete)备份所需的所有归档日志和增量备份。
假设数据文件7在星期一、星期二、星期三、星期四备份。 现在数据文件的备份有4个。 如果 REDUNDANCY 为 2,则星期一和星期二的备份将过时。 如果星期五再进行一次备份,星期三的备份将过时。
在下面的示例中,在 RMAN 提示符下执行 CONFIGURE RETENTION POLICY 命令:
RMAN> CONFIGURE RETENTION POLICY TO REDUNDANCY 3;
RMAN 不会自动删除因保留策略而失效的备份。相反,RMAN 在 REPORT OBSOLETE 输出和 V$BACKUP_FILES 的 OBSOLETE 列中将它们显示为 OBSOLETE。 执行DELETE OBSOLETE命令时,RMAN删除失效的文件。
注意,基于 RMAN 保留策略设置,闪存恢复区域的备份可能会被删除。
Frequently asked questions on Rman backup retention policy Document 463875.1
交叉检查(crosscheck)和删除备份
如果手动删除归档日志文件或备份,即没有被RMAN删除,则需要交叉检查。 此命令确保recovery catalog或控制文件中的备份数据与磁盘或媒体管理目录中的相应数据同步。 CROSSCHECK 命令仅在recovery catalog 或控制文件中有记录的文件上运行。
CROSSCHECK 命令不会删除找不到的文件,而是将它们的资源库记录更新为 EXPIRED。然后,可以运行 DELETE EXPIRED 以删除所有过期文件的资源库记录,以及显示为 EXPIRED 状态的所有的现有物理文件。
部分备份片段或副本错误标记为EXPIRED时,例如,媒体管理器设置错误,在确保文件确实存在于媒体管理器中之后,再次执行 CROSSCHECK BACKUP 命令,将文件还原为可用(AVAILABLE)状态。
交叉检查备份
RMAN> # checks RMAN backups on configured devices
CROSSCHECK BACKUP;
# checks RMAN image copies on configured devices>
CROSSCHECK COPY;
如果备份存储在媒体管理器中,并且未设置 sbt 通道,则必须在 CROSSCHECK 和 DELETE 命令之前分配维护通道:
RMAN> ALLOCATE CHANNEL FOR MAINTENANCE DEVICE TYPE sbt;
CROSSCHECK BACKUP;
DELETE 命令从 DISK 和 sbt 设备删除 RMAN 备份和副本,并在控制文件中将其标记为 DELETED,并从recovery catalog中删除记录(如果使用catalog)。例如:
RMAN> DELETE BACKUPSET 101, 102, 103;
DELETE CONTROLFILECOPY '/tmp/cf.cpy';
DELETE NOPROMPT ARCHIVELOG UNTIL SEQUENCE = 7300;
DELETE BACKUP OF SPFILE TABLESPACE users DEVICE TYPE sbt;
DELETE BACKUP OF DATABASE LIKE '/tmp%'; # pattern match
DELETE ARCHIVELOG ALL BACKED UP 2 TIMES TO DEVICE TYPE sbt;
Oracle 12c 文档参考:
12c Oracle Backup and Recovery Reference
12c Oracle Database Backup and Recovery Basics
Features in 12c
RMAN RECOVER TABLE Feature New to Oracle Database 12c Document 1521524.1
RMAN Pluggable Database Point in Time Recovery Document 1521075.1
RMAN Pluggable Database Backup and Recovery in a Multitenant Environment Document 1521005.1
12.2 Perform Flashback at PDB Level Document 2308215.1
Cross-Platform Database Migration (across same endian) using RMAN backupset in 12c Document 2013540.1
12c How Perform Cross-Platform Database Transport to different Endian Platform with RMAN Backup Sets Document 2013271.1




