從 11g R1 (11.1.0.6) 起,RMAN 引入 Active Database Duplication,無需預先備份即可通過網絡直接從主庫複製數據文件到備庫,極大簡化了 Data Guard 物理備庫的部署。但若主備環境路徑不一致,參數轉換極其關鍵,稍有不慎即會導致「參數無法轉換」錯誤。
db_name、db_unique_name、block_size)。parameter_value_convert、db_file_name_convert、log_file_name_convert 等)、掛載備庫控制文件、恢復數據文件、OPEN RESETLOGS。若 $ORACLE_BASE、$ORACLE_HOME、數據文件路徑任意一項不同,必須在 DUPLICATE 命令中完整聲明所有路徑相關參數,否則 RMAN 會沿用主庫 SPFILE 內的原始路徑,導致備庫啟動失敗或文件創建錯位。
run {
allocate channel prmy1 type disk;
allocate channel prmy2 type disk;
allocate channel prmy3 type disk;
allocate channel prmy4 type disk;
allocate auxiliary channel stby type disk;
duplicate target database for standby from active database
dorecover
spfile
parameter_value_convert 'ora11g','lixora'
set db_unique_name='orcl'
set standby_file_management='AUTO'
set fal_server='ora11g'
set log_archive_dest_1='LOCATION=/oracle/app/oracle/oradata/arch VALID_FOR=(ALL_LOGFILE,ALL_ROLE) DB_UNIQUE_NAME=lixora'
set log_archive_dest_2='service=ora11g ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=ora11g'
set control_files='/oracle/app/oracle/oradata/control01.ctl'
set diagnostic_dest='/oracle/app/oracle'
set audit_file_dest='/oracle/app/oracle'
set db_file_name_convert='/u01/app/ora11/oradata/ORA11G/datafile/','/oracle/app/oracle/oradata/'
set log_file_name_convert='/u01/app/ora11/oradata/ORA11G/onlinelog/','/oracle/app/oracle/oradata/'
set db_create_file_dest='/oracle/app/oracle/oradata/'
set db_recovery_file_dest='/oracle/app/oracle/oradata/'
-- set sga_max_size=200M
-- set sga_target=185M
nofilenamecheck;
}
sql clone "alter system set spfile=...")。spfile ... set 子句,批量執行 alter system set ... scope=spfile,覆蓋路徑、DG 參數、審計/診斷目標等。alter database mount standby database。set newname),並行備份數據文件到備庫路徑。switch clone datafile all)。dorecover 選項),最終 OPEN RESETLOGS。db_recovery_file_dest)diagnostic_dest)audit_file_dest)db_create_file_dest)RESETLOGS 方式打開備庫避坑指南: 若不熟悉主庫參數佈局與路徑結構,建議採用傳統「備份+還原」方式構建 DG,雖步驟多但可控性強;Active Duplication 適合標準化、同構環境的快速部署。