RMAN duplicate database到新主機

gholay發表於2014-03-02
duplicate database有一個優點,它為duplicated
database生成了新的DBID。

metalink[[ID 388431.1]]給出了duplicate database的大致步驟:
 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;
        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),歸檔日誌備份.
 
 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. Making the backup available for the duplicate process,the duplicate process
   我們要把資料備份,包括歸檔備份拷到新主機的相同目錄上,使得duplicate process程式
   可以訪問得到. 我想過用catalog命令修改備份集的路徑,但duplicate資料庫此時還沒有
   控制檔案, 所以行不通,只能拷貝到相同路徑上。
   如:scp -r root@192.168.0.106:/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

6. 確認兩臺主機SQL.net是暢通的. duplicate  target database 可以任何一臺可以SQL.net到
   目標主機與新主機的主機上執行。
   D:>sqlplus sys/system@primary

7. 建立duplicate script如下:
   duplicate target database to guoprima nofilenamecheck;
   因為target資料庫與duplicate資料庫的目錄結構是一樣的,雖然他們位於不同的主機. 所以
   加nofilenamecheck引數,去除Data檔案檢查,否則會報ora-050001錯誤。我們也可以用init.ora檔案中新增
   db_file_name_convert,log_file_name_convert引數更改duplicate資料庫的目錄結構.oracle
   document 有詳細的描述

8. 執行復制.
   D:>rman target sys/system@primary;
   rman> connect auxiliary / 
   rman>duplicate target database to guoprima nofilenamecheck;
   即完成了資料庫的複製。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29196873/viewspace-1098184/,如需轉載,請註明出處,否則將追究法律責任。

相關文章