使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何对我的 Amazon RDS for Oracle 数据库实例执行 RMAN 备份?

2 分钟阅读
0

我想使用 Recovery Manager (RMAN) 备份我的 Amazon Relational Database Service (Amazon RDS) for Oracle 数据库实例的存储。

解决方法

在对 Amazon RDS for Oracle 数据库实例执行 RMAN 备份之前,请注意以下限制:

  • 当您对数据库实例执行 RMAN 备份时,会消耗为该实例分配的存储空间。您还可以使用 Amazon Elastic File System (Amazon EFS) 集成将备份文件存储在扩展存储空间中,而无需增加数据库实例的总体存储大小。
  • 备份、备份压缩、数据库验证和数据块更改跟踪的并行选项等功能仅适用于 Oracle 企业版用户。有关详细信息,请参阅 Oracle 网站上的 Oracle 数据库版本
  • RDS for Oracle 只读副本不支持 RMAN 功能,但您可以对只读副本使用数据块更改跟踪。
  • 在执行 RMAN 备份之前,必须激活数据库实例的自动备份。由于 RMAN 备份是在线操作,因此必须打开存档日志。当您激活实例的自动备份时,您还可以将数据库实例设置为存档日志模式

对数据库实例执行 RMAN 备份

使用以下方法之一对数据库实例执行 RMAN 备份:

  • 使用默认的 DATA_PUMP_DIR 目录。
  • 创建新目录以将备份文件存储在分配给 RDS 实例的存储空间中。
  • 使用 Amazon EFS 集成以避免使用分配给数据库实例的存储空间。

要监控目录消耗的存储空间,请运行以下查询:

SELECT round(SUM(filesize)/1024/1024/1024, 3) SIZE_IN_GB FROM TABLE(rdsadmin.rds_file_util.listdir('<DIRECTORY_NAME>'));

对数据库实例执行完整的数据库备份

当您执行完整数据库备份时,会备份数据库实例中的所有数据文件。这包括控制文件和存储的过程文件。

要使用默认任务参数执行 DATA_PUMP_DIR 中标签名称为 Full_DB_BACKUP 的完整数据库备份,请运行以下查询:

BEGIN
rdsadmin.rdsadmin_rman_util.backup_database_full(
p_owner => 'SYS',
p_directory_name => 'DATA_PUMP_DIR',
p_tag => 'FULL_DB_BACKUP',
p_rman_to_dbms_output => FALSE);
END;
/

对数据库实例执行增量数据库备份

增量备份使用名为 p_level 的附加参数。要执行完整增量备份,请将 p_level 设置为 0。要执行增量差异备份,请将 p_level 设置为 1。有关详细信息,请参阅 Oracle 网站上的关于 RMAN 增量备份

与完整备份一样,RDS for Oracle 数据库实例的增量备份使用一些常用参数,您可以在开始备份之前设置这些参数。

要使用默认任务参数执行 DATA_PUMP_DIR 目录中标签名称为 MY_INCREMENTAL_BACKUP 的增量备份,请运行以下过程:

BEGIN
rdsadmin.rdsadmin_rman_util.backup_database_incremental(
 p_owner => 'SYS',
 p_directory_name => 'DATA_PUMP_DIR',
 p_level => 1,
 p_tag => 'MY_INCREMENTAL_BACKUP',
 p_rman_to_dbms_output => FALSE);
END;
/

对数据库实例执行存档日志备份

使用 Amazon RDS for Oracle rdsadmin_rman_util 程序包根据 SCN 范围、序列号范围和日期范围备份存档日志。

运行以下过程,以备份 ARCHIVE_LOG_BACKUP 目录中标签名称为 LOG_BACKUP 的实例的存档日志。要修改存档日志备份的设置,请参阅为 Oracle 数据库实例执行常见 RMAN 任务

--creating a directory to store archive log backups

EXEC rdsadmin.rdsadmin_util.create_directory(p_directory_name => 'ARCHIVE_LOG_BACKUP');

--performing archive log backup

BEGIN
rdsadmin.rdsadmin_rman_util.backup_archivelog_all(
 p_owner               => 'SYS',
 p_directory_name      => 'ARCHIVE_LOG_BACKUP',
 p_tag                 => 'LOG_BACKUP',
 p_rman_to_dbms_output => FALSE);
END;
/

对数据库实例执行表空间备份

使用备份表空间中描述的常用参数对数据库实例执行单个表空间备份。以下示例命令对自定义目录 TB_BACKUP 中标签名称为 MYTABLESPACE_BACKUPUSERS1 表空间进行备份。

BEGIN
    rdsadmin.rdsadmin_rman_util.backup_tablespace(
        p_owner               => 'SYS',
        p_directory_name      => 'TB_BACKUP',
        p_tablespace_name     => 'USERS1',
        p_tag                 => 'MYTABLESPACE_BACKUP',
        p_rman_to_dbms_output => FALSE);
END;
/

**注意:**您也可以使用 rdsadmin_rman_util 过程来执行控制文件的备份。有关详细信息,请参阅备份控制文件

监控 RMAN 备份作业

要监控 RMAN 备份,请使用 SQL 查询或检查为 RMAN 任务生成的日志文件。

使用以下方法访问 RMAN 备份作业的日志文件:

  • 对于要运行的 RMAN 任务,将 p_rman_to_dbms_output 设置为 TRUE。在运行 rdsadmin_rman_util 之前,请务必将 serveroutput 设置为 on

  • 要列出 RMAN 任务日志文件,请查看 Amazon RDS 控制台上的日志和事件部分

  • 如果 RMAN 备份任务已完成,您还可以运行以下 SQL 查询来列出 RMAN 任务日志。然后,使用 rdsadmin.rds_file_util.read_text_file 过程读取日志。有关详细信息,请参阅列出文件

    column filename format a70
    set linesize 200
    SELECT * FROM TABLE(rdsadmin.rds_file_util.listdir('BDUMP')) where filename like '%rman%';
  • 要检查存储 RMAN 备份的目录大小,请先运行以下查询。然后,监控存储消耗。

    SELECT round(SUM(filesize)/1024/1024, 3) SIZE_IN_MB FROM TABLE(rdsadmin.rds_file_util.listdir('<DIRECTORY_NAME>'));
  • 要列出备份作业的状态以及完成 RMAN 备份作业所花费的时间,请运行以下查询。

    set linesize 500 pagesize 2000
    col Hours format 9999.99
    col STATUS format a10
    select SESSION_KEY, INPUT_TYPE, STATUS,
    to_char(START_TIME,'mm-dd-yyyy hh24:mi:ss') as RMAN_Bkup_start_time,
    to_char(END_TIME,'mm-dd-yyyy hh24:mi:ss') as RMAN_Bkup_end_time,
    elapsed_seconds/3600 Hours from V$RMAN_BACKUP_JOB_DETAILS
    order by session_key;

相关信息

对 Oracle 数据库实例执行其他任务

对 Oracle 数据库实例执行与日志相关的常见任务

Amazon RDS for Oracle 数据库日志文件

AWS 官方
AWS 官方已更新 1 个月前