9.3.4 Oracleデータベースをテープからリストアする

テープへバックアップしたデータをリストアし,Oracleデータベースをリカバリする例について説明します。この例では,いったんテープのデータを副ボリュームにリストアしたあと,副ボリュームと主ボリュームを再同期することでリストアします。リストア対象を特定するオペレーションIDとして,「Operation_A」を使用します。

Oracleデータベースをリストアするには:

  1. バックアップデータのバックアップIDを確認します。
    テープから副ボリュームへのリストアに使用するバックアップデータのバックアップIDを確認します。バックアップIDを確認するには,バックアップサーバでdrmtapecatコマンドを実行します。

    BKServer >drmtapecat -hostname DBServer -l
    BACKUP-ID ORIGINAL-ID HOSTNAME BACKUP-OBJECT INSTANCE    SNAPSHOT TIME       EXPIRATION TIME      BACKUP-MEDIA
    0000000002 0000000001 DBServer Oracle        instance1   2003/08/11 19:30:00 2003/11/11 19:30:00  -
    :
    :

    なお,リストアコマンド実行時に-targetオプションを指定して,特定の表領域を含むインスタンスをリストアする場合には,リストア対象を確認する必要があります。この場合,drmtapecatコマンドに次のオプションを指定して実行します。
    • -o ORACLE <インスタンス名>
    • -backup_id <バックアップID>
  2. バックアップしたデータをテープから副ボリュームへリストアします。
    バックアップサーバで,バックアップIDを指定してEX_DRM_TAPE_RESTOREを実行し,バックアップしたデータをテープから副ボリュームへリストアします。

    BKServer > EX_DRM_TAPE_RESTORE Operation_A -backup_id 0000000002

  3. バックアップ情報を一時ファイルへエクスポートします。
    副ボリュームから主ボリュームへリストアするには,テープから副ボリュームへのリストア操作に関するバックアップ情報を,データベースサーバにコピーする必要があります。EX_DRM_DB_EXPORTを実行し,バックアップ情報を拡張コマンド用一時ディレクトリの一時ファイルへエクスポートします。

    BKServer > EX_DRM_DB_EXPORT Operation_A

  4. リストア時に作成された制御ファイルを一時ディレクトリに退避します。
    制御ファイルと一時ファイルを一括してデータベースサーバへ転送するために,リストア時に作成された制御ファイルをバックアップサーバの拡張コマンド用一時ディレクトリに退避します。退避するには,バックアップサーバでEX_DRM_ORAFILE_PACKを実行します。

    BKServer > EX_DRM_ORAFILE_PACK Operation_A

  5. 制御ファイルと一時ファイルをデータベースサーバで受け取ります。
    データベースサーバでEX_DRM_FTP_GETを実行し,バックアップサーバの制御ファイルと一時ファイルを一括してデータベースサーバで受け取ります。ここでは,FTPサーバにログオンするために使用するユーザーIDを「admin」,パスワードを「password」とします。制御ファイルと一時ファイルは,データベースサーバの拡張コマンド用一時ディレクトリに格納されます。

    DBServer > EX_DRM_FTP_GET Operation_A -server BKServer -user admin -password password

  6. バックアップサーバから転送した一時ファイルをデータベースサーバのバックアップカタログへインポートします。
    バックアップサーバから転送した一時ファイルを,データベースサーバのバックアップカタログへインポートします。一時ファイルをインポートするには,データベースサーバでEX_DRM_DB_IMPORTを実行します。

    DBServer >EX_DRM_DB_IMPORT Operation_A

  7. バックアップサーバから転送した制御ファイルをデータベースサーバへ展開します。
    EX_DRM_ORAFILE_EXTRACTを実行し,バックアップサーバから転送した制御ファイルをデータベースサーバに展開します。

    DBServer > EX_DRM_ORAFILE_EXTRACT Operation_A

  8. バックアップデータのバックアップIDを確認します。
    副ボリュームから主ボリュームへのリストアに使用するバックアップデータのバックアップIDを確認します。バックアップIDを確認するには,drmoracatコマンドを実行します。
  9. 副ボリュームのデータを主ボリュームへリストアします。
    主ボリュームと副ボリュームを再同期することでリストアします。リストアするには,データベースサーバでEX_DRM_ORA_RESTOREを実行します。

    DBServer > EX_DRM_ORA_RESTORE Operation_A -resync

  10. Oracleデータベースをリカバリするために,SQL*Plusにログインします。
    Oracleデータベースが停止しているため,SQL*Plusにログインします。SQL*Plusにログインするときには,必ず次のようにSYSDBA権限のユーザーでログインしてください。

    DBServer > sqlplus <ユーザー名>/<パスワード> as sysdba

  11. Oracleデータベースをマウントします。
    次のようにコマンドを実行し,Oracleデータベースをマウントします。

    SQL> startup mount

  12. Oracleデータベースをリカバリします。
    次のようにコマンドを実行し,Oracleデータベースをリカバリします。

    SQL> recover database;

    リカバリの最後に,適用するアーカイブ済みREDOログファイルが存在しないことを示すメッセージが表示されます。このときは,対応するオンラインREDOログファイルを指定してください。
    リカバリが成功すると「Media recovery complete.」というメッセージが表示されます。
  13. リカバリが成功したらOracleデータベースをオープンします。
    次のようにコマンドを実行し,Oracleデータベースをオープンします。

    SQL> alter database open resetlogs;

    Oracleデータベースをオープンすると「Database altered.」というメッセージが表示されます。