

# 执行 Oracle 数据库实例的常见 RMAN 任务
<a name="Appendix.Oracle.CommonDBATasks.RMAN"></a>

在下一节中，您可以了解如何在运行 Oracle 的 Amazon RDS 数据库实例上执行 Oracle Recovery Manager (RMAN) DBA 任务。为了提供托管服务体验，Amazon RDS 未提供数据库实例的 Shell 访问权限。并且它还限制了对需要高级权限的某些系统程序和表的访问。

使用 Amazon RDS 包 `rdsadmin.rdsadmin_rman_util` 执行 Amazon RDS for Oracle 数据库到磁盘的 RMAN 备份。`rdsadmin.rdsadmin_rman_util` 包支持完整和增量数据库文件备份、表空间备份和归档重做日志备份。

在 RMAN 备份完成后，您可以从 Amazon RDS for Oracle 数据库实例主机复制备份文件。您可能出于还原到非 RDS 主机目的或出于长期存储备份目的而执行此操作。例如，您可以将备份文件复制到 Amazon S3 存储桶。有关更多信息，请参阅使用 [Amazon S3 集成](oracle-s3-integration.md)。

RMAN 备份的备份文件保留在 Amazon RDS 数据库实例主机上，直到您手动删除它们。您可以使用 `UTL_FILE.FREMOVE` Oracle 过程从目录中删除文件。有关更多信息，请参阅 Oracle 数据库文档中的 [FREMOVE 过程](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS70924)。

您不能使用 RMAN 还原 RDS for Oracle 数据库实例。但是，您可以使用 RMAN 将备份还原到本地或 Amazon EC2 实例。有关更多信息，请参阅博客文章[将 Amazon RDS for Oracle 实例还原到自行管理的实例](https://aws.amazon.com/blogs/database/restore-an-amazon-rds-for-oracle-instance-to-a-self-managed-instance/)。

**注意**  
要备份和还原到另一个 Amazon RDS for Oracle 数据库实例，您可以继续使用 Amazon RDS 备份和还原特征。有关更多信息，请参阅 [备份、还原和导出数据](CHAP_CommonTasks.BackupRestore.md)。

**Topics**
+ [RMAN 备份的先决条件](Appendix.Oracle.CommonDBATasks.RMAN-requirements.md)
+ [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)
+ [在 RDS for Oracle 中验证数据库文件](Appendix.Oracle.CommonDBATasks.ValidateDBFiles.md)
+ [启用和禁用数据块更改跟踪](Appendix.Oracle.CommonDBATasks.BlockChangeTracking.md)
+ [反复检查存档重做日志](Appendix.Oracle.CommonDBATasks.Crosscheck.md)
+ [备份归档的重做日志文件](Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.md)
+ [执行完整数据库备份](Appendix.Oracle.CommonDBATasks.BackupDatabaseFull.md)
+ [执行租户数据库的完整备份](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull.md)
+ [执行增量数据库备份](Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental.md)
+ [执行租户数据库的增量备份](Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental.md)
+ [备份表空间](Appendix.Oracle.CommonDBATasks.BackupTablespace.md)
+ [备份控制文件](Appendix.Oracle.CommonDBATasks.backup-control-file.md)
+ [执行块介质恢复](Appendix.Oracle.CommonDBATasks.block-media-recovery.md)

# RMAN 备份的先决条件
<a name="Appendix.Oracle.CommonDBATasks.RMAN-requirements"></a>

在使用 `rdsadmin.rdsadmin_rman_util` 包备份数据库之前，请确保满足以下先决条件：
+ 确保您的 RDS for Oracle 数据库处于 `ARCHIVELOG` 模式。要启用此模式，请将备份保留期设置为非零值。
+ 在备份归档重做日志或执行包括归档重做日志的完整或增量备份时，以及在备份数据库时，请确保将重做日志保留期设置为非零值。需要归档重做日志才能在恢复期间保持数据库文件的一致性。有关更多信息，请参阅 [保留存档重做日志](Appendix.Oracle.CommonDBATasks.RetainRedoLogs.md)。
+ 确保您的数据库实例有足够的可用空间来保存备份。备份数据库时，请将 Oracle 目录对象指定为过程调用中的一个参数。RMAN 将文件放在指定的目录中。您可以使用默认目录（如 `DATA_PUMP_DIR`），或创建新目录。有关更多信息，请参阅 [在主数据存储空间中创建和删除目录](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)。

  您可以使用 CloudWatch 指标 `FreeStorageSpace` 监控 RDS for Oracle 实例中的当前可用空间。尽管 RMAN 仅备份格式化的数据块并支持压缩，但我们建议您的可用空间超过数据库的当前大小。

# RMAN 过程的常见参数
<a name="Appendix.Oracle.CommonDBATasks.CommonParameters"></a>

您可以使用 Amazon RDS 包 `rdsadmin.rdsadmin_rman_util` 中的过程来通过 RMAN 执行任务。有几个参数是包中的过程通用的。该包具有以下常见参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_directory_name`  |  varchar2  |  有效的数据库目录名称。  |  —  |  是  |  包含备份文件的目录的名称。  | 
|  `p_label`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  —  |  否  |  包括在备份文件名中的唯一字符串。  限制为 30 个字符。   | 
|  `p_owner`  |  varchar2  |  `p_directory_name` 中指定的目录的有效拥有者。  |  —  |  是  |  包含备份文件的目录的拥有者。  | 
|  `p_tag`  |  varchar2  |  `a-z`, `A-Z`, `0-9`, `'_'`, `'-'`, `'.'`  |  NULL  |  否  |  可用于区分备份的字符串，以便指示备份的目的或用法，例如每日备份、每周备份或增量级备份。 限制为 30 个字符。此标签不区分大小写。无论输入标签时使用的大小写如何，标签始终以大写形式存储。 标签不一定是唯一的，因此多个备份可以使用相同的标签。 如果未指定标签，则 RMAN 会使用 `TAGYYYYMMDDTHHMMSS` 格式自动分配默认标签，其中 *YYYY* 表示年份、*MM* 表示月份、*DD* 表示某天，*HH* 表示小时（采用 24 小时格式）、*MM* 表示分钟、*SS* 表示秒。日期和时间表示 RMAN 开始备份的时间。 例如，如果备份开始于 2019 年 9 月 27 日 21:45:17，则收到的标签可能为 `TAG20190927T214517`。 以下 Amazon RDS for Oracle 数据库引擎版本支持 `p_tag` 参数： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.CommonParameters.html)  | 
|  `p_compress`  |  布尔值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 以启用基本备份压缩。 指定 `FALSE` 以禁用基本备份压缩。  | 
|  `p_include_archive_logs`  |  布尔值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 以在备份中包括存档重做日志。 指定 `FALSE` 以从备份中排除存档重做日志。 如果您在备份中包括存档重做日志，请使用 `rdsadmin.rdsadmin_util.set_configuration` 过程将保留设置为一小时或更长时间。另外，就在要运行备份之前调用 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 过程。否则，由于缺少已被 Amazon RDS 管理过程删除的存档重做日志文件，备份可能会失败。  | 
|  `p_include_controlfile`  |  布尔值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  指定 `TRUE` 以在备份中包括控制文件。 指定 `FALSE` 以从备份中排除控制文件。  | 
|  `p_optimize`  |  布尔值  |  `TRUE`, `FALSE`  |  `TRUE`  |  否  |  指定 `TRUE` 以启用备份优化（如果包括存档重做日志）以减小备份大小。 指定 `FALSE` 以禁用备份优化。  | 
|  `p_parallel`  |  number  |  对于 Oracle Database 企业版 (EE)，为介于 `1` 和 `254` 之间的有效整数。 `1`对于其他 Oracle Database 版本为 。  |  `1`  |  否  |  通道数。  | 
|  `p_rman_to_dbms_output`  |  布尔值  |  `TRUE`, `FALSE`  |  `FALSE`  |  否  |  为 `TRUE` 时，在 `DBMS_OUTPUT` 目录中的文件之外，RMAN 输出还发送到 `BDUMP` 包。在 SQL\$1Plus 中，使用 `SET SERVEROUTPUT ON` 查看输出。 为 `FALSE` 时，RMAN 输出只发送到 `BDUMP` 目录中的文件。  | 
|  `p_section_size_mb`  |  number  |  有效的整数  |  `NULL`  |  否  |  扇区大小，以兆字节 (MB) 为单位。 通过将每个文件拆分为指定扇区大小来并行验证。 为 `NULL` 时将忽略参数。  | 
|  `p_validation_type`  |  varchar2  |  `'PHYSICAL'`, `'PHYSICAL+LOGICAL'`  |  `'PHYSICAL'`  |  否  |  检测损坏的程度。 指定 `'PHYSICAL'` 检查物理损坏。物理损坏的例子包括数据块在标头和脚注中不匹配。 指定 `'PHYSICAL+LOGICAL'` 在物理损坏之外，还检查逻辑不一致的情况。逻辑损坏的例子包括数据块损坏。  | 

# 在 RDS for Oracle 中验证数据库文件
<a name="Appendix.Oracle.CommonDBATasks.ValidateDBFiles"></a>

您可以使用 Amazon RDS 包 `rdsadmin.rdsadmin_rman_util` 验证 Amazon RDS for Oracle 数据库文件，例如数据文件、表空间、控制文件以及服务器参数文件（SPFILE）。

有关 RMAN 验证的更多信息，请参阅[验证数据库文件和备份](https://docs.oracle.com/database/121/BRADV/rcmvalid.htm#BRADV90063)以及 Oracle 文档中的 [VALIDATE](https://docs.oracle.com/database/121/RCMRF/rcmsynta2025.htm#RCMRF162)。

**Topics**
+ [验证数据库](#Appendix.Oracle.CommonDBATasks.ValidateDB)
+ [验证租户数据库](#Appendix.Oracle.CommonDBATasks.ValidateTenantDB)
+ [验证表空间](#Appendix.Oracle.CommonDBATasks.ValidateTablespace)
+ [验证控制文件](#Appendix.Oracle.CommonDBATasks.ValidateControlFile)
+ [验证 SPFILE](#Appendix.Oracle.CommonDBATasks.ValidateSpfile)
+ [验证 Oracle 数据文件](#Appendix.Oracle.CommonDBATasks.ValidateDataFile)

## 验证数据库
<a name="Appendix.Oracle.CommonDBATasks.ValidateDB"></a>

要验证 RDS for Oracle 中的 Oracle 数据库使用的所有相关文件，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_database`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

以下示例使用参数的默认值来验证数据库。

```
EXEC rdsadmin.rdsadmin_rman_util.validate_database;
```

以下示例使用参数的指定值来验证数据库。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_database(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

当 `p_rman_to_dbms_output` 参数设置为 `FALSE` 时，RMAN 输出写入到 `BDUMP` 目录中的文件。

要查看 `BDUMP` 目录中的文件，请运行以下 `SELECT` 语句。

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

要查看 `BDUMP` 目录中文件的内容，请运行以下 `SELECT` 语句。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

将文件名替换为您要查看的文件的名称。

## 验证租户数据库
<a name="Appendix.Oracle.CommonDBATasks.ValidateTenantDB"></a>

要验证容器数据库（CDB）中租户数据库的数据文件，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_tenant`。

该过程仅适用于当前租户数据库，并使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。以下数据库引擎版本支持此过程：
+ Oracle Database 21c（21.0.0）CDB
+ Oracle Database 19c（19.0.0）CDB

以下示例使用参数的默认值来验证当前的租户数据库。

```
EXEC rdsadmin.rdsadmin_rman_util.validate_tenant;
```

以下示例使用参数的指定值来验证当前的租户数据库。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.validate_tenant(
        p_validation_type     => 'PHYSICAL+LOGICAL', 
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_rman_to_dbms_output => FALSE);
END;
/
```

当 `p_rman_to_dbms_output` 参数设置为 `FALSE` 时，RMAN 输出写入到 `BDUMP` 目录中的文件。

要查看 `BDUMP` 目录中的文件，请运行以下 `SELECT` 语句。

```
SELECT * FROM table(rdsadmin.rds_file_util.listdir('BDUMP')) order by mtime;
```

要查看 `BDUMP` 目录中文件的内容，请运行以下 `SELECT` 语句。

```
SELECT text FROM table(rdsadmin.rds_file_util.read_text_file('BDUMP','rds-rman-validate-nnn.txt'));
```

将文件名替换为您要查看的文件的名称。

## 验证表空间
<a name="Appendix.Oracle.CommonDBATasks.ValidateTablespace"></a>

要验证与表空间关联的文件，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_tablespace`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  有效的空间表名称  |  —  |  是  |  表空间的名称。  | 

## 验证控制文件
<a name="Appendix.Oracle.CommonDBATasks.ValidateControlFile"></a>

要仅验证 Amazon RDS Oracle 数据库实例使用的控制文件，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_current_controlfile`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

## 验证 SPFILE
<a name="Appendix.Oracle.CommonDBATasks.ValidateSpfile"></a>

要仅验证 Amazon RDS Oracle 数据库实例使用的服务器参数文件 (SPFILE)，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_spfile`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

## 验证 Oracle 数据文件
<a name="Appendix.Oracle.CommonDBATasks.ValidateDataFile"></a>

要验证数据文件，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.validate_datafile`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_validation_type`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_rman_to_dbms_output`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  varchar2  |  有效的数据文件 ID 编号或包含完整路径的有效数据文件名称  |  —  |  是  |  数据文件 ID 编号（来自 `v$datafile.file#`）或包含路径的完整数据文件名（来自 `v$datafile.name`）。  | 
|  `p_from_block`  |  number  |  有效的整数  |  `NULL`  |  否  |  在数据文件中开始验证的块的编号。当这为 `NULL` 时，将使用 `1`。  | 
|  `p_to_block`  |  number  |  有效的整数  |  `NULL`  |  否  |  在数据文件中结束验证的块的编号。当这为 `NULL` 时，将使用数据文件中的最大块。  | 

# 启用和禁用数据块更改跟踪
<a name="Appendix.Oracle.CommonDBATasks.BlockChangeTracking"></a>

数据库更改跟踪记录更改了跟踪文件中的数据块。此技术可以提高 RMAN 增量备份的性能。有关详细信息，请参阅 Oracle 数据库文档中的[使用数据块更改跟踪来提高增量备份性能](https://docs.oracle.com/en/database/oracle/oracle-database/19/bradv/backing-up-database.html#GUID-4E1F605A-76A7-48D0-9D9B-7343B4327E2A)。

只读副本不支持 RMAN 特征。但是，作为高可用性策略的一部分，您可以选择使用过程 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking` 在只读副本中启用数据块跟踪。如果您将此只读副本提升为源数据库实例，则会为新的源实例启用数据块更改跟踪。因此，您的实例可以受益于快速的增量备份。

以下数据库引擎版本仅在企业版中支持数据块更改跟踪过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

**注意**  
在单租户 CDB 中，以下操作有效，但没有客户可见的机制可以检测操作的当前状态。另请参阅 [RDS for Oracle CDB 的限制](Oracle.Concepts.CDBs.md#Oracle.Concepts.single-tenant-limitations)。

要为数据库实例启用数据块更改跟踪，您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.enable_block_change_tracking`。要禁用数据块更改跟踪，请使用 `disable_block_change_tracking`。这些过程不需要任何参数。

要确定是否为您的数据库实例启用了块更改跟踪，请运行以下查询。

```
SELECT STATUS, FILENAME FROM V$BLOCK_CHANGE_TRACKING;
```

以下示例为数据库实例启用块更改跟踪。

```
EXEC rdsadmin.rdsadmin_rman_util.enable_block_change_tracking;
```

以下示例为数据库实例禁用块更改跟踪。

```
EXEC rdsadmin.rdsadmin_rman_util.disable_block_change_tracking;
```

# 反复检查存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.Crosscheck"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.crosscheck_archivelog` 反复检查存档重做日志。

您可以使用此过程反复检查控制文件中注册的存档重做日志并可以选择删除过期的日志记录。当 RMAN 进行备份时，它会在控制文件中创建一条记录。随着时间的推移，这些记录会增加控制文件的大小。我们建议您定期删除过期的记录。

**注意**  
标准 Amazon RDS 备份不使用 RMAN，因此不会在控制文件中创建记录。

该过程使用 RMAN 任务的常见参数 `p_rman_to_dbms_output`。

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_delete_expired`  |  布尔值  |  `TRUE`, `FALSE`  |  `TRUE`  |  否  |  当为 `TRUE` 时，从控制文件中删除过期的存档重做日志记录。 当为 `FALSE` 时，保留控制文件中过期的存档重做日志记录。  | 

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

以下示例将控制文件中存档的重做日志记录标记为已过期，但不删除这些记录。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => FALSE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

以下示例从控制文件中删除过期的存档重做日志记录。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.crosscheck_archivelog(
        p_delete_expired      => TRUE,  
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 备份归档的重做日志文件
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs"></a>

您可以使用 Amazon RDS 包 `rdsadmin.rdsadmin_rman_util` 备份 Amazon RDS Oracle 数据库实例的存档重做日志。

以下 Amazon RDS for Oracle 数据库引擎版本支持备份存档重做日志的过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

**Topics**
+ [备份所有存档重做日志](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All)
+ [备份日期范围中的存档重做日志](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date)
+ [备份 SCN 范围中的存档重做日志](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN)
+ [备份序列号范围中的存档重做日志](#Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence)

## 备份所有存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.All"></a>

要备份 Amazon RDS Oracle 数据库实例的所有存档重做日志，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_archivelog_all`。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

以下示例备份数据库实例的所有存档重做日志。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_all(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4, 
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 备份日期范围中的存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Date"></a>

要指定日期范围以备份 Amazon RDS Oracle 数据库实例的特定存档重做日志，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_archivelog_date`。日期范围指定要备份哪些存档重做日志。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_date`  |  date  |  介于磁盘上存在的存档重做日志的 `start_date` 和 `next_date` 之间的日期。该值必须小于或等于为 `p_to_date` 指定的值。  |  —  |  是  |  存档日志备份的起始日期。  | 
|  `p_to_date`  |  date  |  介于磁盘上存在的存档重做日志的 `start_date` 和 `next_date` 之间的日期。该值必须大于或等于为 `p_from_date` 指定的值。  |  —  |  是  |  存档日志备份的结束日期。  | 

以下示例备份数据库实例的日期范围中的存档重做日志。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_date(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_date           => '03/01/2019 00:00:00',
        p_to_date             => '03/02/2019 00:00:00',
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 备份 SCN 范围中的存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.SCN"></a>

要指定系统更改号 (SCN) 范围以备份 Amazon RDS Oracle 数据库实例的特定存档重做日志，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_archivelog_scn`。SCN 范围指定要备份哪些存档重做日志。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_scn`  |  number  |  磁盘上存在的存档重做日志的 SCN。该值必须小于或等于为 `p_to_scn` 指定的值。  |  —  |  是  |  存档日志备份的起始 SCN。  | 
|  `p_to_scn`  |  number  |  磁盘上存在的存档重做日志的 SCN。该值必须大于或等于为 `p_from_scn` 指定的值。  |  —  |  是  |  存档日志备份的结束 SCN。  | 

以下示例备份数据库实例的 SCN 范围中的存档重做日志。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_scn(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_scn            => 1533835,
        p_to_scn              => 1892447,
        p_parallel            => 4,
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

## 备份序列号范围中的存档重做日志
<a name="Appendix.Oracle.CommonDBATasks.BackupArchivedLogs.Sequence"></a>

要指定序列号范围以备份 Amazon RDS Oracle 数据库实例的特定存档重做日志，请使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence`。序列号范围指定要备份哪些存档重做日志。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_from_sequence`  |  number  |  磁盘上存在的存档重做日志的序列号。该值必须小于或等于为 `p_to_sequence` 指定的值。  |  —  |  是  |  存档日志备份的起始序列号。  | 
|  `p_to_sequence`  |  number  |  磁盘上存在的存档重做日志的序列号。该值必须大于或等于为 `p_from_sequence` 指定的值。  |  —  |  是  |  存档日志备份的结束序列号。  | 

以下示例备份数据库实例的序列号范围中的存档重做日志。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_archivelog_sequence(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_from_sequence       => 11160,
        p_to_sequence         => 11160,
        p_parallel            => 4,  
        p_tag                 => 'MY_LOG_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 执行完整数据库备份
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseFull"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_database_full` 执行备份中包括的所有数据块文件的备份。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

以下示例使用参数的指定值来执行数据库实例的完整备份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 执行租户数据库的完整备份
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseFull"></a>

您可以执行在容器数据库（CDB）中包括租户数据库的所有数据块的备份。适用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_tenant_full`。该过程仅适用于当前数据库备份，并使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

以下 RDS for Oracle 数据库引擎版本支持 `rdsadmin_rman_util.backup_tenant_full` 过程：
+ Oracle Database 21c（21.0.0）CDB
+ Oracle Database 19c（19.0.0）CDB

以下示例使用参数的指定值来执行当前租户数据库的完整备份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_full(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'FULL_TENANT_DB_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 执行增量数据库备份
<a name="Appendix.Oracle.CommonDBATasks.BackupDatabaseIncremental"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_database_incremental` 执行数据库实例的增量备份。

有关增量备份的更多信息，请参阅 Oracle 文档中的[增量备份](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  number  |  `0`, `1`  |  `0`  |  否  |  指定 `0` 以启用完整增量备份。 指定 `1` 以启用非累积增量备份。  | 

以下示例使用参数的指定值来执行数据库实例的增量备份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_database_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 执行租户数据库的增量备份
<a name="Appendix.Oracle.CommonDBATasks.BackupTenantDatabaseIncremental"></a>

您可以执行 CDB 中当前租户数据库的增量备份。适用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_tenant_incremental`。

有关增量备份的更多信息，请参阅 Oracle 数据库文档中的[增量备份](https://docs.oracle.com/database/121/RCMRF/rcmsynta006.htm#GUID-73642FF2-43C5-48B2-9969-99001C52EB50__BGBHABHH)。

该过程仅适用于当前租户数据库，并使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c（21.0.0）CDB
+ Oracle Database 19c（19.0.0）CDB

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_level`  |  number  |  `0`, `1`  |  `0`  |  否  |  指定 `0` 以启用完整增量备份。 指定 `1` 以启用非累积增量备份。  | 

以下示例使用参数的指定值来执行当前租户数据库的增量备份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tenant_incremental(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_level               => 1,
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MY_INCREMENTAL_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 备份表空间
<a name="Appendix.Oracle.CommonDBATasks.BackupTablespace"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_tablespace` 备份表空间。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_parallel`
+ `p_section_size_mb`
+ `p_include_archive_logs`
+ `p_include_controlfile`
+ `p_optimize`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

此过程还使用以下其他参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_tablespace_name`  |  varchar2  |  有效的空间表名称。  |  —  |  是  |  要备份的表空间的名称。  | 

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

以下示例使用参数的指定值来执行表空间备份。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tablespace(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tablespace_name     => 'MYTABLESPACE',
        p_parallel            => 4,  
        p_section_size_mb     => 10,
        p_tag                 => 'MYTABLESPACE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 备份控制文件
<a name="Appendix.Oracle.CommonDBATasks.backup-control-file"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.backup_current_controlfile` 备份控制文件。

该过程使用 RMAN 任务的以下常见参数：
+ `p_owner`
+ `p_directory_name`
+ `p_label`
+ `p_compress`
+ `p_rman_to_dbms_output`
+ `p_tag`

有关更多信息，请参阅“[RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)”。

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

以下示例使用参数的指定值来备份控制文件。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.backup_current_controlfile(
        p_owner               => 'SYS', 
        p_directory_name      => 'MYDIRECTORY',
        p_tag                 => 'CONTROL_FILE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/
```

# 执行块介质恢复
<a name="Appendix.Oracle.CommonDBATasks.block-media-recovery"></a>

您可以使用 Amazon RDS 过程 `rdsadmin.rdsadmin_rman_util.recover_datafile_block` 恢复各个数据块，即块介质恢复。您可以使用此重载过程来恢复单个数据块或一系列数据块。

该过程使用 RMAN 任务的以下常见参数：
+ `p_rman_to_dbms_output`

有关更多信息，请参阅 [RMAN 过程的常见参数](Appendix.Oracle.CommonDBATasks.CommonParameters.md)。

此过程使用以下其它参数。


****  

| 参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 说明 | 
| --- | --- | --- | --- | --- | --- | 
|  `p_datafile`  |  `NUMBER`  |  有效的数据文件 ID 号。  |  —  |  是  |  包含损坏块的数据文件。通过以下任一方式指定数据文件： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_block`  |  `NUMBER`  |  有效的整数。  |  —  |  是  |  要恢复的单个块的数量。 以下参数是互斥的： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_from_block`  |  `NUMBER`  |  有效的整数。  |  —  |  是  |  要恢复的一系列块中的第一个块编号。 以下参数是互斥的： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 
|  `p_to_block`  |  `NUMBER`  |  有效的整数。  |  —  |  是  |  要恢复的一系列块中的最后一个块编号。 以下参数是互斥的： [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/Appendix.Oracle.CommonDBATasks.block-media-recovery.html)  | 

以下 Amazon RDS for Oracle 数据库引擎版本支持此过程：
+ Oracle Database 21c (21.0.0)
+ Oracle Database 19c（19.0.0）

以下示例恢复数据文件 5 中的块 100。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_block               => 100,
        p_rman_to_dbms_output => TRUE);
END;
/
```

以下示例将数据文件 5 中的块 100 恢复为 150。

```
BEGIN
    rdsadmin.rdsadmin_rman_util.recover_datafile_block(
        p_datafile            => 5, 
        p_from_block          => 100,
        p_to_block            => 150,
        p_rman_to_dbms_output => TRUE);
END;
/
```