Oracle Cloud Infrastructureドキュメント

オブジェクト・ストレージからのデータベースのリカ・バー

ノート

このトピックは、Exadata DBシステムには適用されません。

このトピックでは、オブジェクト・ストレージに格納されたバックアップからデータベースを復元する方法について説明します。 このサービスは、Oracle Cloud Infrastructureのセキュアでスケーラブルなオンデマンド・ストレージ・ソリューションです。 バックアップ先としてのオブジェクト・ストレージの使用については、「Oracle Cloud Infrastructure Object Storageへのデータベースのバックアップ」を参照してください。

コンソール、API、またはRMANを使用してデータベースをリカバリできます。

警告

Oracle Cloud Infrastructureコンソール、APIまたはCLIを使用してクラウド・リソースに説明、タグまたはわかりやすい名前を割り当てるときは、機密情報を入力しないでください。

必要なIAMポリシー

Oracle Cloud Infrastructureを使用するには、管理者が作成するポリシーで、コンソールまたはSDK、CLIまたはその他のツールを使用したREST APIのどちらを使用しているかにかかわらず、必要なタイプのアクセスを付与する必要があります。 アクションを実行しようとしたときに、権限のないメッセージや権限のないメッセージを取得する場合は、管理者に付与されているアクセスのタイプと作業するコンパートメントを確認してください。

新しいポリシーの場合は、「ポリシーの開始」「共通ポリシー」を参照してください。

前提条件

DBシステムでは、オブジェクト・ストレージの適用可能なSwiftエンドポイントへの接続など、Oracle Cloud Infrastructure Object Storageサービスへのアクセスが必要です。 Oracleでは、このアクセスを有効にするためにVCNを持つサービス・ゲートウェイを使用することをお薦めします。 詳細は、次のトピックを参照してください:

コンソールの使用

コンソールを使用して、コンソールまたはAPIを使用して作成したオブジェクト・ストレージのバックアップからデータベースをリストアできます。 データベースの最後の正常な状態にリストアするか、または特定の時点または既存のシステム変更番号(SCN)を指定することができます。 スタンドアロン・バックアップを使用して新しいデータベースを作成することもできます。

ノート

コンソールに表示されるバックアップのリストには、アン・マネージ・バックアップ(RMANまたはdbcliを使用して直接作成されたバックアップ)は含まれません。

Data Guardを有効にしてデータベースをリストアすることはサポートされていません。 スタンバイ・データベースを終了してからデータベースをリストアするには、まずData Guardアソシエーションを削除する必要があります。

既存のデータベースのリストア

データベースをリストアするには
オブジェクト・ストレージから特定のバックアップを使用してデータベースをリストアするには

バックアップから新しいデータベースを作成

バックアップを使用して、既存のDBシステムにデータベースを作成したり、新規DBシステムを起動できます。 詳細は、次の手順を参照してください。

APIの使用

APIおよび署名リクエストの使用については、REST APIおよび「セキュリティ資格証明」を参照してください。 SDKの詳細は、「ソフトウェア開発キットとコマンドライン・インタフェース」を参照してください。

次のAPI操作を使用してデータベースをリカバリします:

データベース・サービスのAPIの完全なリストについては、「データベース・サービスAPI」を参照してください。

RMANバックアップの使用

このトピックでは、オブジェクト・ストレージに格納されているRecovery Manager (RMAN)バックアップをリカバリする方法について説明します。

前提条件

次のものが必要になります:

前提条件

以下の手順では、次のことが前提となります:

  • リストアされたデータベースをホストするための新しいDBシステムが作成され、新しいDBシステムには他のデータベースは存在しません。 既存のデータベースを持つDBシステムにリストアすることは可能ですが、これはこのトピックの範囲を超えています。
  • 元のデータベースは失われ、残っているのは最新のRMANバックアップだけです。 仮想マシンDBシステムの場合、手順ではデータベース・システム(データベースを含む)が存在しなくなったものとみなします。

    警告

    最新のバックアップに含まれていないデータはすべて失われます。

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

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

  1. DBシステムへのSSH。

    ssh -i <private_key_path> opc@<db_system_ip_address> 
  2. opcとしてログインし、rootユーザーにsudoします。 ハイフンでsudo su -を使用してルート・ユーザー・プロファイルを呼び出すと、PATHがdbcliディレクトリ(/opt/oracle/dcs/bin)に設定されます。

    login as: opc
    			
    [opc@dbsys ~]$ sudo su - 
  3. 既存の空のデータベース・ホームを使用することも、リストアのために新しいデータベース・ホームを作成することもできます。 このステップを完了するのに役立つコマンドを使用してください。

    既存のデータベース・ホームを使用する場合は、次のようにします:

    • データベース・ホームをリストするには、dbcli list-dbhomesコマンドを使用します。

      [root@dbsys ~]# 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
    • dbcli list-databasesコマンドを使用して、データベース・ホームがデータベースに関連付けられていないことを確認します。

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

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

    [root@dbsys ~]# dbcli create-dbstorage --dbname rectest --dataSize 10 --dbstorage ACFS 
    ノート

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

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

  1. SSHをDBシステムに接続し、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は違うでしょう。

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

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

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

    例えば:

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

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

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

    例えば:

    curl -u 'djones@mycompany.com:1cnk!d0++ptETd&C;tHR' -v https://swiftobjectstorage.<region_name>.oraclecloud.com/v1/mycompany/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を設定します。

    RMAN> set dbid 1508405000;
     
    executing command: SET DBID
  7. STARTUP NOMOUNTコマンドを実行します。 サーバー・パラメータ・ファイルが使用できない場合、RMANはダミーのサーバー・パラメータ・ファイルを使用してインスタンスを起動しようとします。 ORA-01078およびLRM-00109のエラーは正常であり、無視することができます。

    RMAN> 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. autobackupからサーバー・パラメータ・ファイルをリストアします。

    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ログの時点で、コミットされたすべてのトランザクションを保持します。