Previous Topic: Point-in-Time のリストアNext Topic: RMAN を使用した、別のホストへのデータベースのリストア


Recovery Manager (RMAN)、および別のサーバへのデータベースのリストア

RMAN を直接使用して別のサーバにデータベースをリストアする場合、以下の前提条件が必要です。

例として、以下のシナリオを考えてみましょう。

:以下の手順で使用するシナリオでは、<Server-A> からバックアップされたデータベースを <Server-B> にリストアし、データベース名を保持することを前提にしています。また、元のホストとデスティネーション ホストのディレクトリ構造が同じであると仮定します。さらに、このシナリオでは Oracle 10gR2 を使用すると仮定します。

データベースを別のサーバにリストアするには、以下の手順に従います。

  1. 別のサーバである Server-B の /etc/oratab を編集し、Oracle ユーザとして元のデータベース インスタンスに以下の行を追加します。
    src:/opt/oracle/10gR2:N
    
  2. Oracle netca (oracle net configuration assistance)ツールを実行して、RMAN カタログ データベース catdb の 1 つの TNS 名を設定し、Oracle ユーザとして Server-B にインストールしたデータベースからそれが認識できることを確認します。
  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 で、データベース バックアップを処理するために Recovery Manager カタログを使用するかどうかをたずねられたら、「y」を指定します。

    Are you planning on using a Recovery Manager catalog to handle database backups (Recommended)?(Y/N) Y
    
    

    Oracle インスタンスの名前を指定するように求めるメッセージが表示されたら、元のインスタンス ID を指定します。

    Oracle instance id to be used by this agent [<Enter> to end]: src
    この Oracle インスタンス用の ORACLE_HOME 環境変数:(default:/opt/oracle/10gR2):
    
    

    Recovery Manager サービス名を指定するように求めるメッセージが表示されたら、RMAN カタログ データベースの設定済みの TNS 名を指定します。

    Since you have configured the Recovery Manager, please provide  the Recovery Manager service name for database src.
    Recovery Manager service name : catdb
    
  5. Server-B の /opt/Arcserve/ABoraagt フォルダ内の sbt.cfg ファイルを編集します。以下の「#」を削除し、Server-A のホスト名を入力します。
    # Node where the original backup was made from
    SBT_ORIGINAL_CLIENT_HOST=Server-A
    
  6. Arcserve Backup サーバから Server-B に、および反対方向にホスト名で ping を実行できることを確認します。
  7. 別のサーバ(Server-B)に 1 つの pfile を追加します。
  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> } 
    

    代わりに、特定のバックアップ ピースから制御ファイルをリストアして Point-in-Time リストアを実行する場合、以下の手順に従います。

    $ 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;