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; }
這些個存放目錄:閃回區目錄,adr目錄,審計日志目錄, Oracle-managed 數據文件目錄 等等,一定要注意啊
------------這裡解釋使用類上述命令執行後的日子輸出,來理解使用上述命令初始化備庫的原理: $rman target sys/sys@chicago auxiliary sys/sys@boston connected to target database: CHICAGO (DBID=761464750) connected to auxiliary database: CHICAGO (not mounted) RMAN> 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 spfile parameter_value_convert 'chicago','boston' set db_unique_name='boston' set db_file_name_convert='/chicago/','/boston/' set log_file_name_convert='/chicago/','/boston/' set control_files='/u01/app/oracle/oradata/control01.ctl' set log_archive_max_processes='5' set fal_client='boston' set fal_server='chicago' set standby_file_management='AUTO' set log_archive_config='dg_config=(chicago,boston)' set log_archive_dest_2='service=chicago ASYNCvalid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=chicago' ; } using target database control file instead of recovery catalog allocated channel: prmy1 ---------這個就不多說了:分配通道 channel prmy1: SID=147 device type=DISK allocated channel: prmy2 channel prmy2: SID=130 device type=DISK allocated channel: prmy3 channel prmy3: SID=137 device type=DISK allocated channel: prmy4 channel prmy4: SID=170 device type=DISK allocated channel: stby channel stby: SID=98 device type=DISK Starting Duplicate Db at 19-MAY-08 contents of Memory Script: { backup as copy reuse -------------拷貝主庫密碼文件,spfile參數文件 file '/u02/app/oracle/product/11.1.0/db_1/dbs/orapwcore' auxiliary format'/u02/app/oracle/product/11.1.0/db_1/dbs/orapwcore1' file'/u02/app/oracle/product/11.1.0/db_1/dbs/spfilecore.ora' auxiliary format'/u02/app/oracle/product/11.1.0/db_1/dbs/spfilecore1.ora' ; sql clone "alter system set spfile= ''/u02/app/oracle/product/11.1.0/db_1/dbs/spfilecore1.ora''"; } executing Memory Script ---- Starting backup at 19-MAY-08 Finished backup at 19-MAY-08 sql statement: alter system set spfile= ''/u02/app/oracle/product/11.1.0/db_1/dbs/spfilecore1.ora'' -----在修改 contents of Memory Script: -----------------------這裡根據設置我們在run 腳本中spfile 標注下的一些參數設置, RMAN會自動生成以下腳本 { sql clone "alter system set audit_file_dest =''/u02/app/oracle/admin/boston/adump'' comment='''' scope=spfile"; sql clone "alter system set dispatchers =''(PROTOCOL=TCP) (SERVICE=core1XDB)'' comment='''' scope=spfile"; sql clone "alter system set log_archive_dest_2 =''service=core11 arch async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=boston'' comment='''' scope=spfile"; sql clone "alter system set db_unique_name =''boston'' comment='''' scope=spfile"; sql clone "alter system set db_file_name_convert =''/chicago/'', ''/boston/'' comment='''' scope=spfile"; sql clone "alter system set log_file_name_convert =''/chicago/'', ''/boston/'' comment='''' scope=spfile"; sql clone "alter system set control_files =''/u01/app/oracle/oradata/control01.ctl'' comment='''' scope=spfile"; sql clone "alter system set log_archive_max_processes =5 comment='''' scope=spfile"; sql clone "alter system set fal_client =''boston'' comment='''' scope=spfile"; sql clone "alter system set fal_server =''chicago'' comment='''' scope=spfile"; sql clone "alter system set standby_file_management =''AUTO'' comment='''' scope=spfile"; sql clone "alter system set log_archive_config =''dg_config=(chicago,boston)'' comment='''' scope=spfile"; sql clone "alter system set log_archive_dest_2 =''service=chicago ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=chicago'' comment='''' scope=spfile"; shutdown clone immediate; ----------------因為在使用這種方式創建備庫時,我們只需要配置一個包含db_name,db_unique_name,block_size 這個三個參數,並把備庫啟動到 nomount 狀態下,主要的目的就是為了讓rman拷貝主庫的spfile 和密碼文件
startup clone nomount ; } executing Memory Script sql statement: alter system set audit_file_dest = ''/u02/app/oracle/admin/boston/adump'' comment= '''' scope=spfile sql statement: alter system set dispatchers = ''(PROTOCOL=TCP) (SERVICE=core1XDB)'' comment= '''' scope=spfile sql statement: alter system set log_archive_dest_2 = ''service=core11 arch async VALID_FOR=(ONLINE_LOGFILES,PRIMARY_ROLE) db_unique_name=boston'' comment= '''' scope=spfile sql statement: alter system set db_unique_name = ''boston'' comment= '''' scope=spfile sql statement: alter system set db_file_name_convert = ''/chicago/'', ''/boston/'' comment= '''' scope=spfile sql statement: alter system set log_file_name_convert = ''/chicago/'', ''/boston/'' comment= '''' scope=spfile sql statement: alter system set control_files = ''/u01/app/oracle/oradata/control01.ctl'' comment= '''' scope=spfile sql statement: alter system set log_archive_max_processes = 5 comment= '''' scope=spfile sql statement: alter system set fal_client = ''boston'' comment= '''' scope=spfile sql statement: alter system set fal_server = ''chicago'' comment= '''' scope=spfile sql statement: alter system set standby_file_management = ''AUTO'' comment= '''' scope=spfile sql statement: alter system set log_archive_config = ''dg_config=(chicago,boston)'' comment= '''' scope=spfile sql statement: alter system set log_archive_dest_2 = ''service=chicago ASYNC valid_for=(ONLINE_LOGFILE,PRIMARY_ROLE) db_unique_name=chicago'' comment= '''' scope=spfile Oracle instance shut down --------------這裡重啟是為了使用更新過的spfile connected to auxiliary database (not started) Oracle instance started Total System Global Area 845348864 bytes Fixed Size 1303188 bytes Variable Size 482348396 bytes Database Buffers 356515840 bytes Redo Buffers 5181440 bytes contents of Memory Script: ---------------開始拷貝standby 控制文件,並傳到備庫的相應位置 { backup as copy current controlfile for standby auxiliary format '/u01/app/oracle/oradata/control01.ctl'; sql clone 'alter database mount standby database'; } executing Memory Script Starting backup at 19-MAY-08 channel prmy1: starting datafile copy copying standby control file output file name=/u02/app/oracle/product/11.1.0/db_1/dbs/snapcf_chicago.f tag=TAG20080519T173406 RECID=2 STAMP=655148053 channel prmy1: datafile copy complete, elapsed time: 00:00:03 Finished backup at 19-MAY-08 sql statement: alter database mount standby database ----------------------mount 備庫,准備修改初始化的數據文件路徑,並拷貝到備庫 contents of Memory Script: { set newname for tempfile 1 to"/u02/app/oracle/oradata/boston/temp01.dbf"; switch clone tempfile all; set newname for datafile 1 to "/u02/app/oracle/oradata/boston/system01.dbf"; set newname for datafile 2 to "/u02/app/oracle/oradata/boston/sysaux01.dbf"; set newname for datafile 3 to "/u02/app/oracle/oradata/boston/undotbs01.dbf"; set newname for datafile 4 to "/u02/app/oracle/oradata/boston/users01.dbf"; backup as copy reuse datafile 1 auxiliary format "/u02/app/oracle/oradata/boston/system01.dbf" datafile 2 auxiliary format "/u02/app/oracle/oradata/boston/sysaux01.dbf" datafile 3 auxiliary format "/u02/app/oracle/oradata/boston/undotbs01.dbf" datafile 4 auxiliary format "/u02/app/oracle/oradata/boston/users01.dbf" ; sql 'alter system archive log current'; } executing Memory Script executing command: SET NEWNAME renamed tempfile 1 to /u02/app/oracle/oradata/boston/temp01.dbf in control file executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME executing command: SET NEWNAME Starting backup at 19-MAY-08 channel prmy1: starting datafile copy input datafile file number=00001 name=/u02/app/oracle/oradata/chicago/system01.dbf channel prmy2: starting datafile copy input datafile file number=00002 name=/u02/app/oracle/oradata/chicago/sysaux01.dbf channel prmy3: starting datafile copy input datafile file number=00003 name=/u02/app/oracle/oradata/chicago/undotbs01.dbf channel prmy4: starting datafile copy input datafile file number=00004 name=/u02/app/oracle/oradata/chicago/users01.dbf output file name=/u02/app/oracle/oradata/boston/undotbs01.dbf tag=TAG20080519T173421 RECID=0 STAMP=0 channel prmy3: datafile copy complete, elapsed time: 00:00:24 output file name=/u02/app/oracle/oradata/boston/users01.dbf tag=TAG20080519T173421 RECID=0 STAMP=0 channel prmy4: datafile copy complete, elapsed time: 00:00:16 output file name=/u02/app/oracle/oradata/boston/system01.dbf tag=TAG20080519T173421 RECID=0 STAMP=0 channel prmy1: datafile copy complete, elapsed time: 00:02:32 output file name=/u02/app/oracle/oradata/boston/sysaux01.dbf tag=TAG20080519T173421 RECID=0 STAMP=0 channel prmy2: datafile copy complete, elapsed time: 00:02:32 Finished backup at 19-MAY-08 sql statement: alter system archive log current contents of Memory Script: { switch clone datafile all; ---------修改standby 控制文件,更新standby 控制文件中的新數據文件路徑 } executing Memory Script datafile 1 switched to datafile copy input datafile copy RECID=2 STAMP=655148231 file name=/u02/app/oracle/oradata/boston/system01.dbf datafile 2 switched to datafile copy input datafile copy RECID=3 STAMP=655148231 file name=/u02/app/oracle/oradata/boston/sysaux01.dbf datafile 3 switched to datafile copy input datafile copy RECID=4 STAMP=655148231 file name=/u02/app/oracle/oradata/boston/undotbs01.dbf datafile 4 switched to datafile copy input datafile copy RECID=5 STAMP=655148231 file name=/u02/app/oracle/oradata/boston/users01.dbf Finished Duplicate Db at 19-MAY-08 released channel: prmy1 released channel: prmy2 released channel: prmy3 released channel: prmy4