機械翻訳について

RMANバックアップを使用したオブジェクト・ストレージからのデータベースのリカバリ

この記事では、Object Storageに格納されたRecovery Manager (RMAN)バックアップをリカバリする方法について説明します。

前提条件

次のことが必要になります:

前提

次の手順では、次のことを前提としています:

  • リストアされたデータベースをホストするために新しいDBシステムが作成され、新しいDBシステムに他のデータベースが存在しません。 既存のデータベースがあるが、このトピックの範囲外であるDBシステムにリストアすることは可能です。
  • 元のデータベースが失われ、残っているのは最新のRMANバックアップです。 この手順では、DBシステム(データベースを含む)が存在しないことを前提としています。

    ノート:

    最新のバックアップに含まれていないデータは失われます。
  • 最後のバックアップ時に元のデータベースで使用されるOracle Walletキーまたは暗号化キー(あるいはその両方)が使用可能です。
  • RMANバックアップには、最新のバックアップ時点の制御ファイルとspfileのコピー、および完全なデータベース・リカバリの実行に必要なすべてのデータファイルおよびアーカイブ・ログ・バックアップが含まれます。
  • RMANカタログはリストア中に使用されません。

DBシステムでのストレージの設定

  1. DB SystemにSSHを実行します。
    ssh -i <private_key_path> opc@<db_system_ip_address>
  2. opcとしてログインし、rootユーザーにsudoを実行します。 sudo su -をハイフンとともに使用して、PATHをdbcliディレクトリ(/opt/oracle/dcs/bin)に設定するrootユーザー・プロファイルを起動します。
    login as: opc
    sudo su -
  3. 既存の空のデータベース・ホームを使用するか、リストア用に新しいデータベース・ホームを作成できます。 このステップを完了するには、該当するコマンドを使用します。

    既存のデータベース・ホームを使用する場合:

    • 「Dbhomeコマンド」を使用して、データベース・ホームをリストします。

      dbcli list-dbhomes
      出力:
      ID                                       Name                 DB Version Home Location
      ---------------------------------------- -------------------- ---------- ---------------------------------------------
      2e743050-b41d-4283-988f-f33d7b082bda     OraDB12102_home1     12.1.0.2   /u01/app/oracle/product/12.1.0.2/dbhome_1
    • 「データベース・コマンド」を使用して、データベース・ホームがどのデータベースにも関連付けられていないことを確認します。

    必要に応じて、「Dbhomeコマンド」を使用して、リストア用のデータベース・ホームを作成します。

  4. 「Dbstorageコマンド」を使用して、DATA、RECOおよびREDOストレージのディレクトリを設定します。 次の例では、最新のデータベース用に10GBのACFSストレージを作成します。
    dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS 

    ノート:

    バージョン11.2データベースをリストアする場合は、ACFSストレージを指定する必要があります。

データベースのリストアおよびリカバリの実行

  1. DBシステムにSSH接続し、opcとしてログインし、oracleユーザーになります。
    sudo su - oracle
  2. データベースのエントリを/etc/oratabに作成します。 元のデータベースと同じSIDを使用します。
    db1:/u01/app/oracle/product/12.1.0.2/dbhome_1:N
  3. oraenvユーティリティを使用して、ORACLE_HOMEおよびORACLE_SID環境変数を設定します。
    . oraenv
  4. 元のデータベースのDBIDを取得します。 これは、バックアップ・メディア上のcontrolfile自動バックアップのファイル名から取得できます。 ファイル名には、DBIDを含む文字列が含まれます。 文字列の一般的な形式はc-DDDDDDDDDDDD-YYYYMMDD-NNです。DDDDDDDDDDDDはDBID、YYYYMMDDはバックアップが作成された日付、NNはファイル名を一意にする順序番号です。 次の例のDBIDは1508405000です。 DBIDは異なります。

    オブジェクト・ストレージの一般的な問合せを実行するには、次のcurl構文を使用します。 赤色のパラメータは、RMANを使用したオブジェクト・ストレージへのデータベースのバックアップ「DBシステムへのバックアップ・モジュールのインストール」で説明されているように、バックアップ・モジュールのインストール時に指定したパラメータと同じです。

    curl -u '<user_ID>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>

    リージョン名を参照するには、「リージョンと可用性ドメイン」を参照してください。

    たとえば:

    curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace

    制御ファイル名からDBIDを取得するには、次の構文を使用します:

    curl -u '<user_id>.com:<auth_token>' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/<object_storage_namespace>/<bucket_name>?prefix=sbt_catalog/c-

    たとえば:

    curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/myobjectstoragenamespace/dbbackups/?prefix=sbt_catalog/c-

    次の出力例では、1508405000がDBIDです。

    {
        "bytes": 1732,
        "content_type": "binary/octet-stream",
        "hash": "f1b61f08892734ed7af4f1ddaabae317",
        "last_modified": "2016-08-11T20:28:34.438000",
        "name": "sbt_catalog/c-1508405000-20160811-00/metadata.xml"
    }
  5. RMANを実行し、ターゲット・データベースに接続します。 pfileまたはspfileを作成したり、バックアップcontrolfileを使用する必要はありません。 これらは次のステップでリストアされます。 ターゲット・データベースは(not started)であることに注意してください。 これは正常であり、この時点で予想されます。
    rman target /
    出力:
    Recovery Manager: Release 12.1.0.2.0 - Production on Wed Jun 22 18:36:40 2016
    Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
    connected to target database (not started)
  6. 前述の値を使用してDBIDを設定します。
    set dbid 1508405000;
  7. 次のコマンドを実行します。 サーバー・パラメータ・ファイルが使用できない場合、RMANは、ダミーのサーバー・パラメータ・ファイルを使用してインスタンスを起動しようとします。 ORA-01078およびLRM-00109エラーは正常であり、無視できます。
    STARTUP NOMOUNT
    startup failed: ORA-01078: failure in processing system parameters
    LRM-00109: could not open parameter file '/u01/app/oracle/product/12.1.0.2/dbhome_1/dbs/initdb1.ora'
     
    starting Oracle instance without parameter file for retrieval of spfile
    Oracle instance started
     
    Total System Global Area    2147483648 bytes
     
    Fixed Size                     2944952 bytes
    Variable Size                847249480 bytes
    Database Buffers            1254096896 bytes
    Redo Buffers                  43192320 bytes
  8. 自動バックアップからサーバー・パラメータ・ファイルをリストアします。

    SBT_LIBRARYは、バックアップ・モジュールのインストール時に-libDirパラメータで指定されたライブラリと同じライブラリです(例: /home/oracle/lib/)。

    OPC_PFILEは、バックアップ・モジュールのインストール時に-configfileパラメータで指定されたファイルと同じファイルです(例: /home/oracle/config)。

    set controlfile autobackup format for device type sbt to '%F';
    run {
      allocate channel c1 device type sbt PARMS  'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore spfile from autobackup;
    }
  9. audit_file_destのディレクトリを作成します。 デフォルトは/u01/app/oracle/admin/$ORACLE_SID/adumpです。 spfileで文字列audit_file_destを検索すると、元のデータベースで使用される設定を確認できます。
    strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep audit_file_dest
    *.audit_file_dest='/u01/app/oracle/admin/db1/adump'
     
    mkdir -p /u01/app/oracle/admin/db1/adump
  10. 元のデータベースでブロック変更トラッキングが有効になっている場合は、ブロック変更トラッキング・ファイルのディレクトリを作成します。 これは、db_create_file_destの下のディレクトリになります。 spfileでディレクトリの名前を検索します。
    strings ${ORACLE_HOME}/dbs/spfile${ORACLE_SID}.ora | grep db_create_file_dest
    *.db_create_file_dest='/u02/app/oracle/oradata/db1'
     
    mkdir -p /u02/app/oracle/oradata/db1/<$ORA_UNQNAME if available or database name>/changetracking
  11. リストアしたサーバー・パラメータ・ファイルを使用してインスタンスを再起動します。
    STARTUP FORCE NOMOUNT;
  12. RMAN自動バックアップから制御ファイルをリストアし、データベースをマウントします。
    set controlfile autobackup format for device type sbt to '%F';
    run {
      allocate channel c1 device type sbt PARMS 'SBT_LIBRARY=/home/oracle/lib/libopc.so, SBT_PARMS=(OPC_PFILE=/home/oracle/config)';
      restore controlfile from autobackup;
      alter database mount;
    }
  13. データベースをリストアおよびリカバリします。
    RESTORE DATABASE;
    RECOVER DATABASE;
  14. RMANは、これ以上見つからないまでアーカイブREDOログを使用してリカバリします。 RMANがバックアップの最後のアーカイブREDOログを適用し、それ以上ログを検出できない場合、次のようなエラーが発生するのは通常です。
    unable to find archived log
    archived log thread=1 sequence=29
    RMAN-00571: ===========================================================
    RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
    RMAN-00571: ===========================================================
    RMAN-03002: failure of recover command at 06/28/2016 00:57:35
    RMAN-06054: media recovery requesting unknown archived log for thread 1 with sequence 29 and starting SCN of 2349563
  15. resetlogsを使用してデータベースを開きます。
    ALTER DATABASE OPEN RESETLOGS;

リカバリが完了しました。 データベースには、最後にバックアップされたアーカイブREDOログ時点のすべてのコミット済トランザクションが含まれます。