上一個主題: 復原管理員 (RMAN) 與將資料庫還原到替代伺服器下一個主題: 使用指令行還原


使用 RMAN 將資料庫還原到其他主機

您可以使用 RMAN 將資料庫還原到其他主機。

使用 RMAN 將資料庫還原到其他主機

  1. 輸入以下指令,從 RMAN 目錄中取出要還原之資料庫的 db_id 值 (資料庫 ID):
    sqlplus <rman user>/<rman password>@<rman service>
    SQL> select db_key, db_id, bs_key, recid, stamp, backup_type, start_time, status from rc_backup_set;
    
  2. 找出要還原之資料庫的 db_id 值。
  3. 輸入以下指令找出來源資料庫每一個資料檔案的位置與檔案編號:
    SVRMGR> select file#, name from v$data file;
    
  4. 將 <host1> 上 $ORACLE_HOME/dbs 內的 <$ORACLE_SID>.ora 檔案複製到 <host2>。
  5. 修改 $ORACLE_HOME/dbs/init<$ORACLE_SID>.ora,並將所有路徑改為 <host2> 上的新目錄結構。
  6. 執行 SQL*Net 配置,以確保安裝在 <host1> 與 <host2> 上的兩個資料庫都可以看到 RMAN 目錄。
  7. 輸入以下指令,以安裝 <host2> 上的 Oracle 密碼檔案:
    orapwd file=$ORACLE_HOME/dbs/orapw$ORACLE_SID password=kernel。
    
  8. 輸入以下指令,以使用 nomount 選項啟動目標資料庫:
    SVRMGR> startup nomount pfile=$ORACLE_HOME/dbs/init<$ORACLE_SID>.ora
    
  9. 輸入下列指令還原控制檔案:

    附註: 您會需要用到在步驟 2 中所取得的 db_id。

    rman rcvcat <rman username>/<rman password>@<rman service>
    
    RMAN> set dbid=<source database db_id value>
    
    RMAN> connect target <username>/<password>;
    
    RMAN> run {
    
    RMAN> allocate channel dev1 type 'sbt_tape';
    
    RMAN> restore controlfile;
    
    RMAN> release channel dev1;
    
    RMAN> }
    
  10. 輸入下列指令裝載目標資料庫:
    SVRMGR> alter database mount;
    
  11. 用步驟 3 找出的位置決定 RMAN 指令檔內各資料檔案的新位置。
  12. 輸入以下指令,用步驟 11 決定的新位置還原資料庫:
    rman target <username>/<password> rcvcat <rman username>/<rman password>@<rman service>
    
    RMAN> run {
    
    RMAN> allocate channel dev1 type 'sbt_tape';
    
    RMAN> set newname for data file 1 to '<new path>'
    
    RMAN> set newname for data file 2 to '<new path>'
    
    ...
    
    RMAN> restore database;
    
    RMAN> switch data file all;
    
    RMAN> release channel dev1;
    
  13. 輸入下列指令,以使用所還原的控制檔案復原資料庫:
    SVRMGR> recover database using backup controlfile until cancel;
    
  14. 輸入下列指令用 resetlogs 選項開啟資料庫:
    SVRMGR> alter database open resetlogs;
    
  15. 若出現 ORA-00344: unable to re-create online log %s 錯誤:
    1. 輸入以下指令更改每個線上重做日誌的名稱:
      SVRMGR> alter database rename file <online redo log #1 path> 
      to <online redo log #1 new path>;
      ...
      SVRMGR> alter database rename file <online redo log #n path> 
      to <onlne redo log #n new path>;
      
    2. 輸入下列指令開啟資料庫:
      SVRMGR> alter database open resetlogs;