RMAN 創建物理standby到新主機

上篇採用RMAN duplicate database,同樣也可以用rman duplicate創建physical
standby,步驟完全一樣,只是腳本稍有不同。
metalink[[ 374069.1]]給出了duplicate創建physical standby的相關步驟:
 1. Backup of the primary database.
 2. Determine how much disk space will be required.
 3. Ensuring you have enough space on your target server.
 4. Making the backup available for the duplicate process.
 5. Creating the init.ora & administration directories for the duplicate database.
 6. Ensuring SQL*NET connections to primary database and RMAN catalog are working.
 7. Prepare RMAN duplicate script.
 8. Execute the RMAN script.

 1. 因爲duplicate database 是一個備份與恢復的過程,備份是必須的。當然也要備份歸檔日誌.
    簡單腳本如下:
   run {
        allocate channel dup type disk;
        backup format '/opt/guo/backup/df_t%t_s%s_p%p' database;
        backup current controlfile for standby format '/opt/guo/backup/df_t%t_s%s_p%p';
        sql 'alter system archive log current';
        backup format '/opt/guo/backup/al_t%t_s%s_p%p' archivelog all;
        release channel dup;
   }
  在primary database上執行:
  Rman target / cmdfile=/opt/guo/dup.rmv
  生成了數據文悠件備份,controlfile+spfile備份(這個不需要,因爲我們備份了datafile 1,
  所以RMAN自動備份了controlfile+spfile),歸檔日誌備份,這比上一篇多了:
  backup current controlfile for standby,因爲standby controlfile 對於創建physical standby
  是必須的.
 
 2,3 兩步是確認the duplicate database數據庫的空間是否足夠,與上一篇沒有變化 腳本類似如下:
   select DF.TOTAL/1048576 "DataFile Size Mb",
            LOG.TOTAL/1048576 "Redo Log Size Mb",
            CONTROL.TOTAL/1048576 "Control File Size Mb",
            (DF.TOTAL + LOG.TOTAL + CONTROL.TOTAL)/1048576 "Total Size Mb"
     from dual,
    (select sum(a.bytes) TOTAL from dba_data_files a) DF,
    (select sum(b.bytes) TOTAL from v$log b) LOG,
    (select sum((cffsz+1)*cfbsz) TOTAL from x$kcccf c) CONTROL

4. 與上一篇沒有變化, 我們要把數據備份,包括歸檔備份拷到新主機的相同目錄上,使得duplicate process進程
   可以訪問得到. 我想過用catalog命令修改備份集的路徑,但duplicate數據庫此時還沒有
   控制文件, 所以行不通,只能拷貝到相同路徑上。
   如:scp -r [email protected]:/opt/guo/backup /opt/guo/backup

5. 爲duplicate數據庫創建init.ora文件,以及相應的目錄.啓動duplicate數據庫到nomout狀態。
   duplicate命令需要duplicate數據庫處於nomount狀態。
   SQL>create spfile from pfile='init.ora'
   SQL>startup nomount
   這一步主要是添加一些初始化參數:
   log_archive_config='dg_config=(guostandby,guoprimary)'
   log_archive_dest_1='service=standby db_unique_name=guostandby'
   log_archive_dest_state_1=enable
   FAL_CLIENT=standby
   FAL_SERVER=primary
   ...
6. 確認兩臺主機SQL.net是暢通的. duplicate  target database 可以任何一臺可以SQL.net到
   目標主機與新主機的主機上執行。
   $ sqlplus sys/system@primary
   這裏兩點需要注意的1.主備數據庫sys用戶的密碼要一樣,這個通過orapwd來完成
                     2.主備數據庫最好都採用靜態註冊的方式,因爲備庫只啓動到mount狀態,
                       不能完成動態註冊

7. 創建duplicate script如下:
   duplicate target database for standby nofilenamecheck dorecover;
   因爲target數據庫與duplicate數據庫的目錄結構是一樣的,雖然他們位於不面的主機. 所以
   加nofilenamecheck參數,否則會報ora-050001錯誤。我們可以用init.ora文件中添加
   db_file_name_convert,log_file_name_convert參數更改duplicate數據庫的目錄結構.oracle
   document 有詳細的描述

8. 執行相關命令.
   $ rman target sys/system@primary;
   rman> connect auxiliary /
   rman>duplicate target database for standby nofilenamecheck dorecover;
   即完成了physical standby。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章