Amazon Relational Database Service
用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Oracle 数据库实例的常见 DBA Recovery Manager (RMAN) 任务

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

您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util 执行适用于 Oracle 的 Amazon RDS 数据库到磁盘的 RMAN 备份。rdsadmin.rdsadmin_rman_util 包支持完整和增量数据库文件备份、表空间备份和存档日志备份。

RMAN 备份使用 Amazon RDS 数据库实例主机上的存储空间。在执行备份时,将 Oracle 目录对象作为过程调用中的参数进行指定。将备份文件放在指定目录中。您可以使用默认目录(如 DATA_PUMP_DIR),或创建新目录。有关更多信息,请参阅 在主数据存储空间中创建新目录

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

RMAN 备份的备份文件保留在 Amazon RDS 数据库实例主机上,直到您手动删除它们。您可以使用 UTL_FILE.FREMOVE Oracle 过程从目录中删除文件。有关更多信息,请参阅 Oracle 文档中的 FREMOVE 过程

在备份存档重做日志或执行包括存档重做日志的完整或增量备份时,重做日志保留必须设置为非零值。有关更多信息,请参阅 保留存档重做日志

注意

要备份和还原到另一个适用于 Oracle 的 Amazon RDS 数据库实例,您可以继续使用 Amazon RDS 备份和还原功能。有关更多信息,请参阅 备份和还原 Amazon RDS 数据库实例

目前,适用于 Oracle 的 Amazon RDS 数据库实例不支持 RMAN 还原。

RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_owner

varchar2

p_directory_name 中指定的目录的有效拥有者。

包含备份文件的目录的拥有者。

p_directory_name

varchar2

有效的数据库目录名称。

包含备份文件的目录的名称。

p_label

varchar2

a-zA-Z0-9'_''-''.'

包括在备份文件名中的唯一字符串。

注意

限制为 30 个字符。

p_compress

布尔值

TRUEFALSE

FALSE

指定 TRUE 以启用基本备份压缩。

指定 FALSE 以禁用基本备份压缩。

p_include_archive_logs

布尔值

TRUEFALSE

FALSE

指定 TRUE 以在备份中包括存档重做日志。

指定 FALSE 以从备份中排除存档重做日志。

如果您在备份中包括存档重做日志,请使用 rdsadmin.rdsadmin_util.set_configuration 过程将保留设置为一小时或更长时间。另外,在执行备份紧前面调用 rdsadmin.rdsadmin_rman_util.crosscheck_archivelog 过程。否则,由于缺少已被 Amazon RDS 管理过程删除的存档重做日志,备份可能会失败。

p_include_controlfile

布尔值

TRUEFALSE

FALSE

指定 TRUE 以在备份中包括控制文件。

指定 FALSE 以从备份中排除控制文件。

p_optimize

布尔值

TRUEFALSE

TRUE

指定 TRUE 以启用备份优化(如果包括存档重做日志)以减小备份大小。

指定 FALSE 以禁用备份优化。

p_parallel

number

对于 Oracle Database 企业版 (EE),为介于 1254 之间的有效整数。

对于其他 Oracle Database 版本为 1

1

通道数。

p_rman_to_dbms_output

布尔值

TRUEFALSE

FALSE

TRUE 时,在 DBMS_OUTPUT 目录中的文件之外,RMAN 输出还发送到 BDUMP 包。当使用 SQL*Plus 时,执行 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' 在物理损坏之外,还检查逻辑不一致的情况。逻辑损坏的例子包括数据块损坏。

验证数据库实例文件

您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util 验证适用于 Oracle 的 Amazon RDS 数据库实例文件,例如数据文件、表空间、控制文件或服务器参数文件 (SPFILE)。

有关 RMAN 验证的更多信息,请参阅验证数据库文件和备份以及 Oracle 文档中的 VALIDATE

验证数据库实例

要验证 Amazon RDS 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 过程的常见参数

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

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'));

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

验证表空间

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

该过程使用 RMAN 任务的以下常见参数:

  • p_validation_type

  • p_parallel

  • p_section_size_mb

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_tablespace_name

varchar2

有效的空间表名称

表空间的名称。

验证控制文件

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

该过程使用 RMAN 任务的以下常见参数:

  • p_validation_type

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

验证 SPFILE

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

该过程使用 RMAN 任务的以下常见参数:

  • p_validation_type

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

验证数据文件

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

该过程使用 RMAN 任务的以下常见参数:

  • p_validation_type

  • p_parallel

  • p_section_size_mb

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_datafile

varchar2

有效的数据文件 ID 编号或包含完整路径的有效数据文件名称

数据文件 ID 编号(来自 v$datafile.file#)或包含路径的完整数据文件名(来自 v$datafile.name)。

p_from_block

number

有效的整数

NULL

在数据文件中开始验证的块的编号。当这为 NULL 时,将使用 1

p_to_block

number

有效的整数

NULL

在数据文件中结束验证的块的编号。当这为 NULL 时,将使用数据文件中的最大块。

启用和禁用块更改跟踪

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_rman_util.enable_block_change_tracking 为数据库实例启用块更改跟踪。

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_rman_util.disable_block_change_tracking 为数据库实例禁用块更改跟踪。

这些过程不需要任何参数。启用块更改跟踪可提高增量备份的性能。

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持这些过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.0.0 版本

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

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;

反复检查存档重做日志

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

您可以使用此过程反复检查控制文件中注册的存档重做日志并可以选择删除过期的日志。每次执行 RMAN 备份时,都会在控制文件中创建一条记录。随着时间的推移,这些记录会增加控制文件的大小。定期刷新旧的、过期的记录是一种最佳实践。

注意

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

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

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_delete_expired

布尔值

TRUEFALSE

TRUE

当为 TRUE 时,从控制文件中删除过期的存档重做日志。

当为 FALSE 时,保留控制文件中过期的存档重做日志。

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持此过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.0.0 版本

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

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

备份存档重做日志

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

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持备份存档重做日志的过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.0.0 版本

备份所有存档重做日志

要备份 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

有关更多信息,请参阅 RMAN 过程的常见参数

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

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

备份日期范围中的存档重做日志

要指定日期范围以备份 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

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_from_date

date

介于磁盘上存在的存档重做日志的 start_datenext_date 之间的日期。该值必须小于或等于为 p_to_date 指定的值。

存档日志备份的起始日期。

p_to_date

date

介于磁盘上存在的存档重做日志的 start_datenext_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_rman_to_dbms_output => FALSE); END; /

备份 SCN 范围中的存档重做日志

要指定系统更改号 (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

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

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_rman_to_dbms_output => FALSE); END; /

备份序列号范围中的存档重做日志

要指定序列号范围以备份 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

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

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_rman_to_dbms_output => FALSE); END; /

执行完整数据库备份

您可以使用 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_archived_logs

  • p_optimize

  • p_compress

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持此过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.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_rman_to_dbms_output => FALSE); END; /

执行增量数据库备份

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

有关增量备份的更多信息,请参阅 Oracle 文档中的增量备份

该过程使用 RMAN 任务的以下常见参数:

  • p_owner

  • p_directory_name

  • p_label

  • p_parallel

  • p_section_size_mb

  • p_include_archived_logs

  • p_include_controlfile

  • p_optimize

  • p_compress

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持此过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.0.0 版本

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_level

number

01

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_rman_to_dbms_output => FALSE); END; /

执行表空间备份

您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_rman_util.backup_tablespace 执行数据库实例表空间备份。

该过程使用 RMAN 任务的以下常见参数:

  • p_owner

  • p_directory_name

  • p_label

  • p_parallel

  • p_section_size_mb

  • p_include_archived_logs

  • p_include_controlfile

  • p_optimize

  • p_compress

  • p_rman_to_dbms_output

有关更多信息,请参阅 RMAN 过程的常见参数

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

参数名称 数据类型 有效值 默认值 是否必需 说明

p_tablespace_name

varchar2

有效的空间表名称。

要备份的表空间的名称。

以下适用于 Oracle 的 Amazon RDS 数据库引擎版本支持此过程:

  • 11.2.0.4.v19 或更高的 11.2 版本

  • 12.1.0.2.v15 或更高的 12.1 版本

  • 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高的 12.2 版本

  • 所有 18.0.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_rman_to_dbms_output => FALSE); END; /