执行 Oracle 数据库实例的常见 RMAN 任务
在下一节中,您可以了解如何在运行 Oracle 的 Amazon RDS 数据库实例上执行 Oracle Recovery Manager (RMAN) DBA 任务。为了提供托管服务体验,Amazon RDS 未提供数据库实例的 Shell 访问权限。并且它还限制了对需要高级权限的某些系统程序和表的访问。
您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util
执行 Amazon RDS for Oracle Database 到磁盘的 RMAN 备份。rdsadmin.rdsadmin_rman_util
包支持完整和增量数据库文件备份、表空间备份和存档日志备份。
RMAN 备份使用 Amazon RDS 数据库实例主机上的存储空间。在执行备份时,将 Oracle 目录对象作为过程调用中的参数进行指定。将备份文件放在指定目录中。您可以使用默认目录(如 DATA_PUMP_DIR
),或创建新目录。有关更多信息,请参阅“在主数据存储空间中创建和删除目录”。
在 RMAN 备份完成后,您可以从 Amazon RDS for Oracle 数据库实例主机复制备份文件。您可能出于还原到非 RDS 主机目的或出于长期存储备份目的而执行此操作。例如,您可以将备份文件复制到 Amazon S3 存储桶。有关更多信息,请参阅使用 Amazon S3 集成。
RMAN 备份的备份文件保留在 Amazon RDS 数据库实例主机上,直到您手动删除它们。您可以使用 UTL_FILE.FREMOVE
Oracle 过程从目录中删除文件。有关更多信息,请参阅 Oracle 文档中的 FREMOVE 过程
在备份存档重做日志或执行包括存档重做日志的完整或增量备份时,重做日志保留必须设置为非零值。有关更多信息,请参阅“保留存档重做日志”。
要备份和还原到另一个 Amazon RDS for Oracle 数据库实例,您可以继续使用 Amazon RDS 备份和还原功能。有关更多信息,请参阅“备份和还原 Amazon RDS 数据库实例”
目前,Amazon RDS for Oracle 数据库实例不支持 RMAN 还原。
RMAN 过程的常见参数
您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util
中的过程来通过 RMAN 执行任务。有几个参数是包中的过程通用的。该包具有以下常见参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
varchar2 |
有效的数据库目录名称。 |
— |
是 |
包含备份文件的目录的名称。 |
|
varchar2 |
|
— |
否 |
包括在备份文件名中的唯一字符串。 限制为 30 个字符。 |
|
varchar2 |
|
— |
是 |
包含备份文件的目录的拥有者。 |
|
varchar2 |
|
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 参数:
|
|
布尔值 |
|
|
否 |
指定 指定 |
|
布尔值 |
|
|
否 |
指定 指定 如果您在备份中包括存档重做日志,请使用 |
|
布尔值 |
|
|
否 |
指定 指定 |
|
布尔值 |
|
|
否 |
指定 指定 |
|
number |
对于 Oracle Database 企业版 (EE),为介于
|
|
否 |
通道数。 |
|
布尔值 |
|
|
否 |
为 为 |
|
number |
有效的整数 |
|
否 |
扇区大小,以兆字节 (MB) 为单位。 通过将每个文件拆分为指定扇区大小来并行验证。 为 |
|
varchar2 |
|
|
否 |
检测损坏的程度。 指定 指定 |
验证数据库实例文件
您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util
验证 Amazon RDS for Oracle 数据库实例文件,例如数据文件、表空间、控制文件或服务器参数文件 (SPFILE)。
有关 RMAN 验证的更多信息,请参阅验证数据库文件和备份
验证数据库实例
要验证 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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
varchar2 |
有效的数据文件 ID 编号或包含完整路径的有效数据文件名称 |
— |
是 |
数据文件 ID 编号(来自 |
|
number |
有效的整数 |
|
否 |
在数据文件中开始验证的块的编号。当这为 |
|
number |
有效的整数 |
|
否 |
在数据文件中结束验证的块的编号。当这为 |
启用和禁用数据块更改跟踪
数据库更改跟踪记录更改了跟踪文件中的数据块。此技术可以提高增量备份的性能。有关详细信息,请参阅 Oracle 数据库文档中的使用数据块更改跟踪来提高增量备份性能
要为数据库实例启用数据块更改跟踪,您可以使用 Amazon RDS 过程 rdsadmin.rdsadmin_rman_util.enable_block_change_tracking
。要禁用数据块更改跟踪,请使用 disable_block_change_tracking
。这些过程不需要任何参数。
只读副本支持数据块更改跟踪。如果从使用数据块更改跟踪的源数据库创建只读副本,则副本将使用数据块更改跟踪。您无法对装载的副本启用数据块更改跟踪。如果将装载的副本置于只读模式,则不会启用数据块更改跟踪,但您可以使用 enable_block_change_tracking
启用它。如果将 Oracle 副本提升到源数据库,则可以像对任何其他 Oracle 数据库实例一样使用数据块更改跟踪。
以下数据库引擎版本支持数据块更改跟踪过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
在单租户 CDB 中,以下操作有效,但没有客户可见的机制可以检测操作的当前状态。另请参阅 单租户 CDB 的限制。
要确定是否为您的数据库实例启用了块更改跟踪,请运行以下查询。
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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
布尔值 |
|
|
否 |
当为 当为 |
以下 Amazon RDS for Oracle 数据库引擎版本支持此过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
以下示例将控制文件中存档的重做日志记录标记为已过期,但不删除这些记录。
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; /
备份存档重做日志
您可以使用 Amazon RDS 包 rdsadmin.rdsadmin_rman_util
备份 Amazon RDS Oracle 数据库实例的存档重做日志。
以下 Amazon RDS for Oracle 数据库引擎版本支持备份存档重做日志的过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
备份所有存档重做日志
要备份 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 过程的常见参数”。
以下示例备份数据库实例的所有存档重做日志。
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; /
备份日期范围中的存档重做日志
要指定日期范围以备份 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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
date |
介于磁盘上存在的存档重做日志的 |
— |
是 |
存档日志备份的起始日期。 |
|
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 范围中的存档重做日志
要指定系统更改号 (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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
number |
磁盘上存在的存档重做日志的 SCN。该值必须小于或等于为 |
— |
是 |
存档日志备份的起始 SCN。 |
|
number |
磁盘上存在的存档重做日志的 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; /
备份序列号范围中的存档重做日志
要指定序列号范围以备份 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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
number |
磁盘上存在的存档重做日志的序列号。该值必须小于或等于为 |
— |
是 |
存档日志备份的起始序列号。 |
|
number |
磁盘上存在的存档重做日志的序列号。该值必须大于或等于为 |
— |
是 |
存档日志备份的结束序列号。 |
以下示例备份数据库实例的序列号范围中的存档重做日志。
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; /
执行完整数据库备份
您可以使用 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 过程的常见参数”。
以下 Amazon RDS for Oracle 数据库引擎版本支持此过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
以下示例使用参数的指定值来执行数据库实例的完整备份。
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; /
执行增量数据库备份
您可以使用 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_archive_logs
-
p_include_controlfile
-
p_optimize
-
p_compress
-
p_rman_to_dbms_output
-
p_tag
有关更多信息,请参阅“RMAN 过程的常见参数”。
以下 Amazon RDS for Oracle 数据库引擎版本支持此过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
number |
|
|
否 |
指定 指定 |
以下示例使用参数的指定值来执行数据库实例的增量备份。
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; /
备份表空间
您可以使用 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 过程的常见参数”。
此过程还使用以下其他参数。
参数名称 | 数据类型 | 有效值 | 默认值 | 必需 | 描述 |
---|---|---|---|---|---|
|
varchar2 |
有效的空间表名称。 |
— |
是 |
要备份的表空间的名称。 |
以下 Amazon RDS for Oracle 数据库引擎版本支持此过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
以下示例使用参数的指定值来执行表空间备份。
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; /
备份控制文件
您可以使用 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 过程的常见参数”。
以下 Amazon RDS for Oracle 数据库引擎版本支持此过程:
-
Oracle Database 19c(19.0.0)
-
Oracle Database 12c 第 2 版(12.2),使用 12.2.0.1.ru-2019-01.rur-2019-01.r1 或更高版本
-
Oracle Database 12c 第 1 版(12.1),使用 12.1.0.2.v15 或更高版本
以下示例使用参数的指定值来备份控制文件。
BEGIN rdsadmin.rdsadmin_rman_util.backup_tablespace( p_owner => '
SYS
', p_directory_name => 'MYDIRECTORY
', p_tag => 'CONTROL_FILE_BACKUP
', p_rman_to_dbms_output =>FALSE
); END; /