跳至內容

如何備份我的 Amazon RDS for Oracle 資料庫執行個體?

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 Enterprise Edition 使用者使用。如需更多資訊,請參閱 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>'));

對資料庫執行個體執行完整資料庫備份

執行完整資料庫備份時,會涵蓋資料庫執行個體中的所有資料檔案。備份內容也包含控制檔案與預存程序檔案。

若要建立標記名稱為 Full_DB_BACKUP、儲存在 DATA_PUMP_DIR,且採用預設任務參數的完整資料庫備份,請執行以下查詢:

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 資料庫執行個體的增量備份也提供可在開始備份前設定的通用參數

若要使用預設任務參數,建立標記名稱為 MY_INCREMENTAL_BACKUP 並存放在 DATA_PUMP_DIR 目錄中的增量備份,請執行以下程序:

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;
/

對資料庫執行個體執行資料表空間備份

使用備份資料表空間中說明的通用參數,備份資料庫執行個體中的個別資料表空間。以下命令範例會將 USERS1 資料表空間備份至自訂目錄 TB_BACKUP,並以 MYTABLESPACE_BACKUP 作為標記名稱。

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 備份作業

您可以使用 SQL 查詢或檢查 RMAN 任務產生的日誌檔案,以監控 RMAN 備份。

您可以透過以下方式存取 RMAN 備份作業的日誌檔案:

  • 對於要執行的 RMAN 任務,將 p_rman_to_dbms_output 設為 TRUE。請務必先將 serveroutput 設為 on,再執行 rdsadmin_rman_util 套件。

  • 若要列出 RMAN 任務日誌檔案,請在 Amazon Aurora 和 RDS 主控台中查看logs and events section (日誌與事件區段)。

  • 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 官方已更新 2 年前