如何備份我的 Amazon RDS for Oracle 資料庫執行個體?
我想使用 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;
相關資訊
相關內容
已提問 2 年前
已提問 3 年前
已提問 3 年前
已提問 3 年前
