Previous Topic: Restore Point-in-TimeNext Topic: 使用 RMAN 將資料庫還原到其他主機


復原管理員 (RMAN) 與將資料庫還原到替代伺服器

當直接使用 RMAN 將資料庫還原至替代伺服器時,需要下列先決條件:

例如,請考慮下列案例:

附註:下列程序中的案例,係假設要將 <Server-A> 備份的資料庫還原到 <Server-B>,並保留原資料庫名稱。此外亦假設原始主機與目標主機的目錄結構相同。本案例另外還會假設您使用的是 Oracle 10gR2。

若要將資料庫還原至替代伺服器,請執行下列步驟:

  1. 在替代 Server-B 伺服器上編輯 /etc/oratab,並新增下列一行至原始資料庫執行個體 src 做為 oracle 使用者:
    src:/opt/oracle/10gR2:N
    
  2. 執行 Oracle netca (oracle net configuration assistance) 工具,為 RMAN 目錄資料庫 catdb 配置一個 TNS 名稱,並確定可從 Server-B 上安裝的資料庫以 oracle 使用者的身分看見此名稱。
  3. 以該 oracle 使用者建立與原始 Server-A 相同的目錄結構。

    例如:

    $cd $ORACLE_BASE/admin
    $mkdir src
    $mkdir adump  bdump  cdump  dpdump  pfile  udump
    $mkdir -p $ORACLE_BASE/oradata/src
    $mkdir -p $ORACLE_BASE/flash_recovery_area/SRC
    
  4. 執行 orasetup,以為原始資料庫在替代伺服器 (Server-B) 上配置 oracle 代理程式。
    # /opt/CA/ABoraagt/orasetup
    
    

    當 orasetup 提示您使用「復原管理員」目錄來處理資料庫備份時,指定「y」。

    您打算使用「復原管理員」目錄來處理資料庫備份嗎?(建議)(Y/N) Y
    
    

    當 orasetup 提示您指定 Oracle 執行個體的名稱時,請指定原始的執行個體 ID。

    此代理程式將使用的 Oracle 執行個體 ID [按 <Enter> 結束]:src
    此 Oracle 執行個體的 ORACLE_HOME 環境值:(預設:/opt/oracle/10gR2):
    
    

    當 orasetup 提示您指定「復原管理員」服務名稱時,請指定已配置的 RMAN 目錄資料庫的 TNS 名稱。

    您已配置「復原管理員」,因此請提供資料庫 src 的「復原管理員」服務名稱。
    「復原管理員」服務名稱:catdb
    
  5. 編輯 Server-B 上 /opt/Arcserve/ABoraagt 資料夾下的 sbt.cfg 檔案。移除下列 "#" 並輸入 Server-A 的主機名稱。
    # 製作原始備份的來源節點
    SBT_ORIGINAL_CLIENT_HOST=Server-A.
    
  6. 確定您能在 Arcserve Backup 伺服器與 Server-B 之間使用主機名稱互 Ping。
  7. 新增一個 pfile 至替代伺服器 (Server-B)。
  8. 使用已建立的 pfile,以 "nomount" 選項啟動 src 資料庫。
    $export ORACLE_SID=src
    $sqlplus /nolog
    SQL>conn sys/passw0rd as sysdba
    SQL>startup nomount pfile=$ORACLE_HOME/dbs/init$ORACLE_SID.ora
    SQL>exit
    
  9. 使用 RMAN 目錄還原 spfile。
    $rman catalog rman/rman@catdb
    RMAN> set dbid=<source database db_id value> 
    RMAN> connect target system/passw0rd;
    RMAN>run {
    2>allocate channel ch1 type sbt parms='SBT_LIBRARY=/opt/Arcserve/ABoraagt/libobk64.so';
    3>restore spfile;
    4>release channel  ch1;
    5>}
    

    附註:若為 32 位元 Oracle 資料庫,SBT_LIBRARY 會使用 libobk32.so。若為 64 位元 Oracle 資料庫,SBT_LIBRARY 會使用 libobk64.so。

    還原工作會在 Arcserve Backup 伺服器工作佇列上執行。工作完成後,spfile 資料庫會還原至 $ORACLE_HOME/dbs 路徑。

    關閉資料庫。

    RMAN>shutdown immediate;
    RMAN>exit
    

    使用您剛還原的 spfile,以 "nomount" 選項重新啟動資料庫。

    $sqlplus /nolog
    SQL>conn sys/passw0rd as sysdba
    SQL>startup nomount
    SQL>quit
    
  10. 還原控制檔案。
    $rman catalog rman/rman@catdb
    RMAN> set dbid=<source database db_id value> 
    RMAN> connect target system/passw0rd;
    RMAN> run { 
    2> allocate channel dev1 type 'sbt_tape' 
    parms='SBT_LIBRARY=/opt/Arcserve/ABoraagt/libobk64.so'; 
    3> restore controlfile; 
    4> release channel dev1; 
    5> } 
    

    或者,如果您要從特定備份片段還原控制檔案,以便執行特定時點還原,請執行下列步驟:

    $ rman catalog rman/rman@catdb
    RMAN> set dbid=<source database db_id value> 
    RMAN> connect target system/passw0rd;
    RMAN> run { 
    2> allocate channel dev1 type 'sbt_tape' 
    parms='SBT_LIBRARY=/opt/Arcserve/ABoraagt/libobk64.so'; 
    3> restore controlfile from ‘Y’; 
    4> release channel dev1; 
    5> } 
    

    若要取得 'Y' (表示備份片段資訊),請執行下列指令:

    RMAN> set dbid=<dbid>; 
    RMAN> list backup of controlfile; 
    

    還原工作會在 Arcserve Backup 伺服器工作佇列上執行。工作完成後,資料庫控制檔案會還原至 $ORACLE_HOME/oradata/$ORACLE_SID 路徑。

  11. 還原控制檔案後,請裝載資料庫。
    $sqlplus / as sysdba
    SQL>alter database mount;
    SQL>exit
    
  12. 還原資料庫並封存日誌。
    $rman catalog rman/rman@catdb
    RMAN> set dbid=<source database db_id value>
    RMAN> connect target system/passw0rd;
    RMAN>run {
    2>allocate channel ch1 type sbt parms='SBT_LIBRARY=/opt/Arcserve/ABoraagt/libobk64.so';
    3>restore database;
    4>restore archivelog all;
    5>release channel  ch1;
    6>}
    

    還原工作會在 Arcserve Backup 伺服器工作佇列上執行。工作完成後,資料庫檔案與封存日誌便已還原。

  13. 使用備份控制檔案來復原資料庫,然後開啟資料庫。
    $sqlplus / as sysdba
    SQL> recover database using backup controlfile until cancel
    
  14. 輸入下列指令以 resetlogs 選項開啟資料庫:
    SQL> alter database open resetlogs;