プライマリ・コンテンツに移動
Oracle® Fail Safe概要および管理ガイド
リリース4.2.1 for Microsoft Windows
E88304-02
目次へ移動
目次

前
次

7 可用性および障害耐久力を高めるためのシングルインスタンス・データベースの構成

Oracle Fail Safeにより、Microsoft Windowsフェイルオーバー・クラスタを使用して構成されたWindowsクラスタで稼働しているシングルインスタンスOracle Database(Oracle Database Personal Editionを除く)の可用性が向上します。

シングルインスタンスOracle Databaseの可用性を高めると、1つのクラスタ・ノードが停止または故障した場合でも、別のクラスタ・ノードでデータベースが再起動され、そのデータベースにアクセスするアプリケーションとデータベースとの接続が失われるのはほんの一瞬にすぎません。透過的アプリケーション・フェイルオーバーの使用後、アプリケーションは自動的にデータベースに再接続できるため、フェイルオーバーがユーザーの作業に悪影響を与えることはありません。

この章では、以下のトピックについて説明します。

スタンドアロン・シングルインスタンス・データベースの検出

Oracle Fail Safe Serverは、Oracle DatabaseインスタンスのWindowsサービスを検索してスタンドアロン・シングルインスタンス・データベース(クラスタ・グループに含まれないもの)を検出します。その時点でクラスタ・グループに含まれていないクラスタ・ノードで検出されたすべてのサービスが、Oracle Fail Safe Managerの「使用可能なOracleリソース」リストに表示されます。

スタンドアロン・シングルインスタンス・データベースのためのOracle Net構成

次の項では、スタンドアロン・シングルインスタンス・データベースのためのOracle Netの構成について簡単に説明します。

リスナーはローカル・ホストのホスト名ではなくIPアドレスを使用する必要がある

リスナーの定義でシステムのホスト名が使用されている場合、このリスナーはホスト名に関連付けられているIPアドレスのみではなく、ノード上のすべてのIPアドレスでリスニングを行います。ローカル・リスナーは、グループに割り当てられているIPアドレスをリスニングする際にクラスタ・グループ・リスナーの障害の原因となるクラスタIPアドレスも開きます。

この問題を回避するために、リスナーにはホスト名ではなくホスト・エントリのノードIPアドレスを使用する必要があります。Oracle Fail Safeがクラスタ・グループを検証するかデータベースをグループに追加する場合、HOSTがローカル・ノードのホスト名に設定されているADDRESSエントリを検索します。ローカル・ノード名を使用するすべてのHOSTエントリは、ノードのIPアドレスを使用するように変更されます。

Oracle Fail Safe環境での無効なエントリの例を次に示します。

    LISTENER =
        ....
        (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=NTCLU-152)
            (PORT=1521)
       )

Oracle Fail Safe環境での有効なエントリの例を次に示します。

      LISTENER =
        ....
        (ADDRESS=
            (PROTOCOL=TCP)
            (HOST=192.0.2.254)
            (PORT=1521)
       )

共有サーバーの構成とスタンドアロン・データベース

可用性が高まるようにデータベースが構成されている場合、Oracle Fail Safeではデフォルト・リスナーの調整を行います。この調整は、スタンドアロン・データベースを含むすべてのデータベースのOracle Net構成に影響を与えます。その結果、クラスタ内のデータベースが可用性が高まるように構成されている場合、Oracle Fail Safe環境のすべてのスタンドアロン・データベースのOracle Net構成を調整する必要があります。

スタンドアロン・シングルインスタンス・データベースの共有サーバーの構成がデフォルト・リスナーに依存している場合、データベース・パラメータ・ファイル内にリスナー・パラメータが指定されていません。(デフォルト・リスナーとは、ノードのホスト名、デフォルト・ポート番号およびTCPプロトコルをリスニングするリスナーです。)この場合、Oracle Fail Safeでホスト名ではなくIPアドレスを使用するようにデフォルトのリスナーが変更されると、その構成が機能しなくなります。

次の手順を実行してこの問題を解決します。

  1. データベースのデータベース初期化パラメータ・ファイルを見つけて、そのファイルにLOCAL_LISTENERパラメータを追加します。
    LOCAL_LISTENER = network-name
    
  2. データベースのホームのlistener.oraファイルで、デフォルト・リスナーの定義を探します。この定義内で、TCPプロトコルが使用されている最初のアドレスを調べます。

    たとえば、デフォルト・リスナーが次のように定義されているとします。

    LISTENER =
      (DESCRIPTION_LIST=
        (DESCRIPTION=
          (ADDRESS_LIST=
            (ADDRESS=
              (PROTOCOL=TCP)
              (HOST=192.0.2.1)
              (PORT=1521)
            )
          )
        )
      )
    

    最初のアドレスは次のとおりです。

    (ADDRESS_LIST=
            (ADDRESS=
              (PROTOCOL=TCP)
              (HOST=192.0.2.1)
              (PORT=1521)
    
  3. 手順2で調べたアドレスを使用して、tnsnames.oraファイルにnetwork-nameのエントリを作成します。

    この例では、次のようにエントリを作成します。

    network-name= (ADDRESS=
                       (PROTOCOL=TCP)
                       (HOST=192.0.2.1)
                       (PORT=1521)
                       )
                    

    この変更は、データベースが再起動された時点で有効になります。

SIDリスト・エントリ

Oracle Fail Safeは、リスナーSIDリストを維持しません。クラスタ・データベースがリスナーのSIDリストに含まれている必要のあるアプリケーションを使用する場合、クラスタの各ノードで該当するlistener.oraファイルを手動で編集してください。

複数のリスナーを伴うノードでのOracle Netの構成

Oracle Fail Safeはスタンドアロン・データベース・リスナーを検索する際、リスナーのWindowsサービスをスキャンして、データベースによって使用されているネットワーク・アドレスでリスニングしているものを探します。ネットワーク・アドレスにリスナーが複数存在する場合、Oracle Fail Safeは実行中のリスナー・サービスを選択します。どのリスナーも起動されていない場合、ネットワーク・アドレスでリスニングしているリスナーで最初に検出されたものがOracle Fail Safeによって選択されます。

注意:

ネットワーク構成エラーを回避するために、Oracle Fail Safeのどの操作においても、実行前にスタンドアロン・シングルインスタンス・データベースのリスナーが予定どおりの状態(停止または起動)であることを確認してください。

シングルインスタンスOracleデータベースのグループへの追加

可用性が高まるようにシングルインスタンスOracle Databaseを構成するには、少なくとも1つのネットワーク名が含まれているグループにデータベースを追加します。Oracle Fail Safeにより、シングルインスタンスOracle Databaseで必要なすべてのリソースが追加されます。通常、このグループには次のリソースが含まれます。

  • それぞれが1つのIPアドレスおよびネットワーク名から構成される1つ以上のネットワーク名

  • Oracle Databaseインスタンス

  • Oracle Databaseで使用する全ディスク

  • グループのネットワーク名上でグループ内のデータベースへの接続要求をリスニングするOracle Netネットワーク・リスナー

前提条件

シングルインスタンス・データベースをグループに追加する前に、次の前提条件に注意してください。

  • データベース初期化パラメータ・ファイルを除き、シングルインスタンス・データベースにより使用されるファイルはすべて共有クラスタ・ディスク上に置く必要があります。データベース初期化パラメータ・ファイルは、プライベート・ディスクにも共有クラスタ・ディスクにも配置できます。初期化パラメータ・ファイルの配置の詳細は、「データベース・パラメータの識別」を参照してください。

  • リソースが属するグループは1つのみです。2つのシングルインスタンス・データベースが同じディスク・ドライブを共有する場合は、この2つのデータベースを同一グループ内に指定する必要があります。

  • フェイルオーバーの際、一時表内のデータはフェイルオーバーされません。(ソートやハッシュ結合など)一時表や一時表領域を使用する操作では、フェイルオーバー・ノードで再起動されるときに必要な一時オブジェクトが再作成されます。ただし、一時表内の特定のデータに依存するアプリケーションが正常に機能することを確認する必要があります。

    一時表の詳細は、『Oracle Database概要』の一時表に関する説明を参照してください。

  • グループには、少なくとも1つのネットワーク名が含まれている必要があります。

  • データベース・サービス名がクラスタ全体で一意になるようにする必要があります。

  • グループ内のすべてのリスナーおよびデータベースは同じOracleホームを使用している必要があります。

  • Oracle Fail Safeでは、マウントされたフォルダ(マウント・ポイント)やOracleデータベースで使用されるファイルのシンボリック・リンクの使用をサポートしていません。たとえば、制御ファイルやサーバー・パラメータ・ファイルは、ファイルを表す実際のファイル名以外のファイル名で参照できません。クラスタ共有ボリュームに格納され、C:\ClusterStorageルート・フォルダを使用するファイルはサポートされます。

  • データベースを起動するにはテキスト初期化パラメータ・ファイル(PFILE)を使用する必要があります。oradimユーティリティを使用して、PFILEの場所を設定します。

構成手順

表7-1に、可用性が高まるようにシングルインスタンスOracle Databaseを構成する際に必要な作業の一覧を示します。各作業の詳細は、オンライン・ヘルプとチュートリアルを参照してください。オンライン・ヘルプにアクセスするには、Oracle Fail Safe Managerウィンドウの右側のペインの「アクション」メニューから「ヘルプ」を選択します。または、Oracle Fail Safe Managerの中央のペインの「Fail Safeドキュメント」を選択し、順を追った詳細な説明は「チュートリアル」「HTML」または「PDF」バージョンを選択します。

表7-1 データベースを構成する手順

手順 プロシージャ Oracle Fail Safe Managerでの手順

1

Oracle Databaseの可能所有者となるクラスタの各ノードのプライベート・ディスク上に、Oracle Databaseソフトウェアがインストールされていることを確認します。

インストールの情報は、Oracle Databaseのマニュアルを参照してください。

2

グループを作成し、1つ以上のネットワーク名を追加します。

  1. Microsoft Windowsフェイルオーバー・クラスタ・マネージャ・ウィンドウの右側のペインの「操作」メニューで「サービスまたはアプリケーションの構成」を選択すると、高可用性ウィザードが開きます。

  2. 「Select Service or Application」ページから「Other Server」を選択して、「Next」をクリックします。

  3. 「クライアント アクセス ポイント」ページで、ネットワーク・アドレスを設定して、「次へ」をクリックします。

  4. 「記憶域の選択」ページのリストからクラスタ・ディスクを選択して、「次へ」をクリックします。それ以外にはリソース・タイプを選択せず、「Next」を選択して選択内容を確認します。

3

サンプル・データベースを作成(必要な場合)します。

「Oracleリソース」ビューで、画面右側のペインの「アクション」メニューから「サンプル・データベースの作成」アクションを選択します。このサンプル・データベースを使用して、Oracle Fail Safeの機能を本番データベースで使用する前に試すことができます。サンプルは、本番作業用には使用しないでください。

4

スタンドアロン・データベースを検証します。

「使用可能なOracleリソース」リストから検証するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「検証」を選択します。この操作では、有効性検査を実行し、スタンドアロン・データベースが常駐するノード上に正しく構成されているかどうかを確認して、もう一方のクラスタ・ノードに存在するデータベースへの参照を削除します。

5

Oracle Databaseをグループに追加します。

「使用可能なOracleリソース」リストから追加するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「リソースの追加」を選択します。これにより、可用性が向上するようにシングルインスタンスOracle Databaseを構成できます。

6

各クライアント・システム上のtnsnames.oraファイルを変更します。

仮想サーバーを認識するようにクライアントを構成します(ネットワーク構成ツールを使用して各クライアント・システム上のtnsnames.oraファイルを変更します)。詳細は、「Oracle Netリスナー・リソースの作成および構成について」を参照してください。

Oracleデータベースの構成データ

Oracle Fail Safe Managerには、可用性が向上するようにシングルインスタンスOracle Databaseを構成する際に役立つリソースをグループに追加ウィザードがあります。ウィザードで表示されるページは、現在グループに含まれているネットワーク名の数と、クラスタ内のノード数によって異なります。

各グループに1つのネットワーク名が含まれる構成が典型的ですが、複雑な構成では複数のネットワーク名が含まれる場合もあります。リソースをグループに追加ウィザードを使用して典型的な構成を実行するには、次のデータが必要です。

  • インスタンス名およびデータベース初期化パラメータ・ファイルのファイル指定などのシングルインスタンスOracle Databaseの識別情報

  • OS認証が使用されていない場合はデータベースのSYSパスワード

現在複数のネットワーク名が含まれているグループにデータベースを追加する場合、リスナーのネットワーク名も指定するよう求められます。

次の項では、シングルインスタンス・データベースの構成要件について詳細に説明します。

クラスタ・リソースの命名

Microsoftフェイルオーバー・クラスタでは、リソース名に任意のテキスト文字列を使用できます。デフォルトで、Oracle Fail SafeではデータベースのインスタンスIDを使用します。必要に応じて、この名前をもっとわかりやすい名前に変更できます。たとえば、ここではクラスタ・リソース名がTest Databaseに変更されています。

図7-1 「リソースをグループに追加」ウィザードの「クラスタ・リソース名」ページ

図7-1の説明が続きます
「図7-1 「リソースをグループに追加」ウィザードの「クラスタ・リソース名」ページ」の説明

ノードの選択

データベースをグループに追加する際に、クラスタが3つ以上のノードから構成されている場合は、図7-2に示すように、選択済ノードのリストを指定して、データベースの可能所有者となるノードを指定するように求められます。特定のノードをデータベースの可能所有者として指定しない場合は、そのノードを「選択済ノード」リストから選択して、左矢印をクリックします。

「リソースの「可能所有者ノード」リスト」では、「可能所有者ノード」リストの概念の詳細を説明しています。

図7-2 全ノードが使用可能な場合のリソースをグループに追加ウィザード・ページ

図7-2の説明が続きます
「図7-2 全ノードが使用可能な場合のリソースをグループに追加ウィザード・ページ」の説明

シングルインスタンス・データベースをグループに追加する際に、クラスタが2つ以上のノードで構成されており、そのうちの1つ以上のノードが使用できない場合、どのノードをデータベースの可能所有者とするのかを指定するように求められます。このような場合、図7-3に示すように、ウィザード・ページには使用できないノードが表示されます。

図7-3 使用できないノードがある場合のリソースをグループに追加ウィザード・ページ

図7-3の説明が続きます
「図7-3 使用できないノードがある場合のリソースをグループに追加ウィザード・ページ」の説明

ネットワーク名の選択

シングルインスタンス・データベースを追加するグループに複数のネットワーク名が含まれている場合、図7-4に示すように、「リソースをグループに追加」ウィザードによってリスナーのネットワーク名を指定するよう求められます。ネットワーク名が1つしか含まれていないデータベースを追加する場合には、このページは表示されません。

図7-4 「リソースをグループに追加」ウィザードの「ネットワーク名」ページ

図7-4の説明が続きます
「図7-4 「リソースをグループに追加」ウィザードの「ネットワーク名」ページ」の説明

Oracle Fail Safeでは、1つのグループに複数のネットワーク名がサポートされます。グループ内のすべてのデータベースは同じネットワーク名を使用する必要があり、グループにデータベースを追加する前にネットワーク名がグループに追加される必要があります。グループの作成順序は、次のとおりです。

  1. グループを作成します。
  2. グループに1つ以上のネットワーク名を追加します。
  3. グループに1つ以上のシングルインスタンス・データベースを追加します。

たとえば、グループに2つのネットワーク名を持つデータベースが含まれ、2番目のデータベースをそのグループに追加する場合、2番目のデータベースは、グループに構成されていた最初のデータベースと同じネットワーク名を使用する必要があります。Oracle Fail Safe Managerは、グループに追加したすべてのシングルインスタンス・データベースで同じネットワーク名が使用されていることを確認します。

複数のネットワーク名を持つグループ内にリソースを構成する方法の詳細は、「複数のネットワーク名を使用した構成」を参照してください。

データベース・パラメータの識別

リソースをグループに追加ウィザードでは、図7-5に示すように、可用性が高まるように構成されるシングルインスタンス・データベースを一意に識別する、データベース・パラメータ情報を入力する必要があります。

図7-5 データベース・パラメータ・ウィザード・ページ

図7-5の説明が続きます
「図7-5 データベース・パラメータ・ウィザード・ページ」の説明

Oracle Fail Safeでは、(たとえば、tnsnames.oraファイルを更新する場合)このデータを使用してデータベースがクラスタ内に構成されます。また、ユーザーが入力したデータがMicrosoft Windowsフェイルオーバー・クラスタに渡され、データはMicrosoft Windowsフェイルオーバー・クラスタに登録されて、データベースがオンラインまたはオフラインになるとき、あるいはIs Aliveポーリングが実行されるときに使用されます。Oracle Fail Safeは、初期化パラメータ・ファイルの名前と場所を要求します。

Oracle Databaseの起動時には、初期化パラメータ・ファイルを使用してデータベース名、メモリーの割当て量、制御ファイル名、各種の制限事項、およびその他のシステム・パラメータが指定されます。

通常は、どのクラスタ・ノードがデータベースのホストであるかにかかわらずパラメータ・ファイルにアクセスできるように、パラメータ・ファイルはクラスタ・ディスク上に配置します。ただし、データベースが稼働するように構成されたすべてのクラスタ・ノードの同じ場所に初期化パラメータ・ファイルを置くことが確実な場合は、各ノードのプライベート・ディスクにファイルのコピーを配置することも可能です。また、ホストになっているノードに応じてデータベースに異なるパラメータを設定するために、各ノードのプライベート・ディスクにパラメータ・ファイルを配置することもできます。ノード間でメモリー量または処理能力に差がある場合は、このような方法が有効です。

注意:

可用性が高まるようにデータベースを構成した後、必要に応じて初期化パラメータ・ファイルを移動できます。この操作の実行方法の詳細は、Oracle Fail Safe Managerのヘルプを参照してください。

Oracle Fail Safeでは、「パラメータ・ファイル」フィールドでテキスト初期化パラメータ・ファイル(PFILE)を指定する必要があります。バイナリ・サーバー・パラメータ・ファイル(SPFILE)を、可用性が高まるように構成されたデータベースとともに使用する場合は、SPFILESPFILE-locationパラメータを使用して、PFILE内でSPFILE=の位置を指定します。SPFILEは、データベースが常駐するクラスタ・グループのメンバーである共有ディスクに常駐する必要があります。たとえば、PFILEに次のようなパラメータを含めることが可能です。

SPFILE=F:\OFSDB\oradata\OFS1\spfileTestDboradb.ora

(Oracle Fail Safeで使用するPFILE内にSPFILEを指定する場合、そのSPFILEをエクスポートする際には注意が必要です。ファイル指定なしでCREATE PFILE FROM SPFILEコマンドを使用すると、Oracle Fail Safeで使用するPFILEが上書きされます。SPFILEをエクスポートするPFILEには必ず一意のファイル名を指定してください。サーバー・パラメータ・ファイルの詳細は、『Oracle Database管理者ガイド』を参照してください。)

クラスタの各ノードのすべてのOracleデータベース・インスタンスは同じSPFILEを使用する必要があり、ファイルは共有記憶域に存在する必要があります。SPFILEが共有記憶域に保存されていない場合、次のようにして、SQL*PLUSを使用してコピーを作成します。

CREATE SPFILE=shared disk path\spfiledb_unique_name.ora

SPFILE=shared disk path\spfiledb_unique_name.oraという名前が含まれるPFILEORACLE_HOME\dbs\initsid.oraを作成します。

データベース認証

「認証」ページは、Oracle Fail Safeのインストールに使用されたアカウントがWindowsオペレーティング・システム・グループのいずれにもない場合は表示されません。
  • ORA_DBAグループ

  • ORA_SID_DBAグループ

  • またはデータベースに関連付けられているORA_home_DBAグループ。

Oracle Fail Safeがこの3つのグループのいずれかにインストールされている場合は、オペレーティング・システム認証を使用してデータベースにアクセスできます。アカウントがこの3つのグループのいずれのメンバーでもない場合は、SYSアカウントを使用してデータベースにアクセスする必要があります。

Oracleデータベースがクラスタ・グループに追加されると、Oracle Fail SafeはORA_sid_DBAおよびORA_sid_OPERローカル・ユーザー・グループがデータベースを所有するクラスタ・ノードに存在するかどうかを確認します。これらのローカル・グループが存在する場合は、クラスタ内の他のノードにレプリケートされます。Fail Safeでは、ローカル・ユーザー名など、そのノードに固有のグループ・メンバーはコピーされません。組込みメンバーはコピーされます。たとえば、管理者メンバーは他のノードにコピーされます。ローカル・グループにメンバーがない場合は、無視されます。

図7-6に示すように、Oracle Fail Safeでデータベースおよびデータベース・インスタンスにアクセスする際に、オペレーティング・システム認証とSYSアカウントのどちらを使用するかを、このページから指定できます。

クラスタ内のすべてのデータベースでオペレーティング・システム認証が有効になっている場合(Fail Safeサーバーのユーザー名がORA_DBAユーザー・グループのメンバーである場合)、「オペレーティング・システム認証を使用」オプションがデフォルトで選択されており、変更できません。

クラスタワイドでオペレーティング・システム認証が有効になっていない場合、特定のデータベースに対して「オペレーティング・システム認証を使用」を選択するか(Fail Safeサーバー・ユーザーがORA_SID_DBAユーザー・グループに追加されます)、「SYSアカウントを使用」を選択して、データベースSYSアカウントと関連するパスワードを使用してFail Safeを認証する必要があることを指定できます。

図7-6 「データベースの認証」ページ

図7-6の説明は次にあります
「図7-6 「データベースの認証」ページ」の説明

Oracleホーム・ユーザーが構成されている場合、Oracle Fail SafeによってOracleホーム・ユーザー用にパスワード・フィールドのセットが追加で表示されます。Oracleホーム・ユーザーのパスワードも必ず入力してください。

図7-7 「データベースの認証」ページ

図7-7の説明が続きます
「図7-7 「データベースの認証」ページ」の説明

データベース・パスワード

Oracle Fail Safeによりスタンドアロン・データベースに関連付けられたパスワード・ファイルがあることが検出されると、図7-8に示すように、フェイルセーフ・データベースのすべての可能所有者ノードにパスワード・ファイルをOracle Fail Safeで作成するかどうかをウィザードによって尋ねられます。

「はい、パスワード・ファイルを作成します」オプションを選択することをお薦めします。パスワード・ファイルは、リモート操作を実行する場合に必要となります。たとえば、Recovery Manager(RMAN)では、セキュリティ保護されていないOracle Net接続でターゲット・データベースに接続する際にパスワード・ファイルが必要となります。

「いいえ、パスワード・ファイルを作成しません」オプションを選択すると、すべてのユーザーはオペレーティング・システム認証を使用してデータベースにアクセスする必要があります。さらに、ユーザーはデータベース管理のリモート操作を実行できません。

図7-8 データベース・パスワード・ウィザード・ページ

図7-8の説明が続きます
「図7-8 データベース・パスワード・ウィザード・ページ」の説明

Oracle Fail Safeでは、データベースの可能所有者ノードであるすべてのクラスタ・ノードにパスワード・ファイルを作成するかどうかの選択に応じて、データベース初期化パラメータ・ファイルが次のように調整されます。

  • はい、パスワード・ファイルを作成します

    REMOTE_LOGIN_PASSWORDFILEパラメータをEXCLUSIVEに設定します。

  • 「いいえ、パスワード・ファイルを作成しません」を選択する場合

    REMOTE_LOGIN_PASSWORDFILEパラメータをNONEに設定します。

データベースをグループに追加した後でSYSアカウントのパスワードを変更する場合は、Oracle Fail Safe Managerを使用してパスワードを更新する必要があります。データベースをグループに追加した後でこのアカウントのパスワードを更新する方法の詳細は、「SYSアカウントのパスワードの変更」を参照してください。

データベース・リソースの追加の確認

最後に、「リソースの追加」ウィザードが操作を確認するよう求めます。「追加」操作中は、クラスタ・グループがオフラインになります。Oracle Fail Safeがデータベースをグループに追加している間、データベースとグループ内のすべてのリソースが使用できなくなります。「完了」をクリックして、Oracle Databaseをグループに追加する作業を完了します。

図7-9 データベース・リソースの追加の確認ページ

図7-9の説明が続きます
「図7-9 データベース・リソースの追加の確認ページ」の説明

Oracle Netリスナー・リソースの作成および構成について

シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeでは、Oracle Netリスナー・リソースおよびデータベース・リソースがグループに作成および構成されます。スタンドアロン・データベースがグループに追加されたときに使用しているリスナーに基づいて、新規グループのリスナーが構成されます。新規リスナーには、元のリスナーと同じパラメータが設定され、元のリスナーのアドレス・リストと同じポート番号を使用します。

通常の操作中、クラスタは定期的にリスナーをポーリングし、Windowsサービスが起動されており、リスナーがステータス・コマンドに応答するかどうか検証されます。それらのチェックが失敗すると、リスナーが停止され、クラスタはフェイルオーバー・ポリシーを開始して、リスナー・リソースを再起動する必要があるか、またはグループを別のノードにフェイル・オーバーする必要があるかが決定されます。Oracleクラスタ・リソースのコントロール・マネージャが検出したリソースの障害はすべてWindowsアプリケーションのイベント・ログに記録されます。

Oracle Fail Safeでは、データベースと、リスナーに関連付けられたIPアドレス(リスナーそのものではない)との間に依存性を作成します。この依存性は、データベースに接続する前にIPアドレスがオフライン化された場合に、クライアントの応答が停止するという状況を避けるために作成されます。

可用性の高いシングルインスタンス・データベースへのクライアント接続

(データベースを含む)ネットワーク・オブジェクトは、ネットワーク・アドレスによって識別されます。クライアントとデータベース間を接続するには、クライアントのtnsnames.oraファイル内のネットワーク・アドレスと、サーバーのlistener.oraファイル内のネットワーク・アドレスが一致している必要があります。つまり、クライアントがネットワーク・アドレスを使用してネットワーク・オブジェクトの特定の場所に接続要求を送ると、受け側は、このアドレス上で要求をリスニングし、クライアント情報と一致するアドレス情報に基づいて接続を許可します。

シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeでは、データベースが常駐するOracleホーム内にグループのリスナーを作成します。Oracle Fail Safeがネットワーク名情報を構成する際、データベースの所有者の可能性のあるクラスタ・ノードのすべてのOracleホームでtnsnames.oraファイルを更新します。これによって、Oracle Fail Safeで常に最新の構成でデータベース・インスタンスにアクセスできるようになります。

データベースをグループに追加した後のOracle Net構成の更新

次の項で説明するように、シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeによりtnsnames.oraファイル、listener.oraファイルおよびsqlnet.oraファイル内のデータベースのOracle Net構成が変更されます。

TNS_ADMIN環境変数が存在する場合、Oracle Fail Safeは、OracleホームではなくTNS_ADMIN環境変数でポイントされるディレクトリのネットワーク構成ファイルを更新します。

Oracle Fail Safeにより行われるtnsnames.oraファイルの更新内容

シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeはtnsnames.oraファイルのすべてのネット・サービス記述子を、クラスタ・グループによって使用されるネットワーク名を使用するよう更新します。
  • まず、Oracle Fail Safeによってtnsnames.oraファイルがスキャンされ、データベースを参照するネット・サービス記述子が存在するか確認されます。既存の記述子は、グループのTNSリスナーのアドレス・リストを使用するよう変更されます。

  • 次に、データベースのservice_namesパラメータで検出された各サービス名について、Oracle Fail Safeはtnsnames.oraファイルにネット・サービス記述子が存在するか確認します。

  • ネット・サービス記述子が検出されなかった場合、Oracle Fail Safeにより、グループのリスナー・アドレス・リストに一致するアドレス・リストが含まれる新しいネット・サービス記述子が作成されます。ノードに複数のOracleホームが存在し、TNS_ADMIN環境変数が設定されていない場合、データベースのすべてのネット・サービス記述子が、他のOracleホームのtnsnames.oraファイルに複製されます。

  • 同様に、新しいネット・サービス記述子も、クラスタに含まれる他のすべてのノードのtnsnames.oraファイルに複製されます。

グループにシングルインスタンス・データベースを追加する際に、Oracle Netサービス名にドメイン名を指定しない場合、次のようにOracle Fail Safeによってドメイン名が選択され、ネット・サービス名に追加されます。

  • Oracle Fail Safeにより、ノードの最新データベース・バージョンのOracleホームでデフォルトのドメイン名が検索されます。検出された場合、このデフォルトのドメイン名がネット・サービス名に追加されます。たとえば、ノード上で最もバージョンが新しいデータベースはOracle Database 12cであると仮定します。Oracleネット・サービス名にMyDBと指定した場合に、Oracle Database 12cホームでのデフォルトのドメイン名がexample.comであれば、ネット・サービス名はMyDB.example.comとなります。

  • ノード上で最もバージョンが新しいデータベースのOracleホームに、デフォルトのドメイン名がない場合、ネット・サービス名には何も追加されません。たとえば、MyDBと指定した場合、ネット・サービス名もMyDBとなります。

次の例に示すように、アーカイブ・ログの宛先をサービス名として定義した場合、どのクラスタ・ノードでもtnsnames.oraファイルが自動的に更新されなくなります。各クラスタ・ノードで、サービス名エントリを手動で編集するか、tnsnames.oraファイルに追加します。

log_archive_dest_2='SERVICE=standby OPTIONAL REOPEN=120'

データベースに接続するすべてのクライアント・システムにおいて、データベースを参照する各ネットワーク・サービス記述子のアドレス・リストのHOSTパラメータに、クラスタ・グループのネットワーク名を使用するよう、tnsnames.oraファイルが更新されている必要があります。各クライアントのローカルtnsnames.oraファイルを手動で編集するか、ネットワーク構成ツールを使用します。

Oracle Fail Safeにより行われるlistener.oraファイルの更新内容

シングルインスタンス・データベースをグループに追加すると、Oracle Fail Safeではlistener.oraファイルを次のように変更します。

  1. シングルインスタンス・データベースに関連付けられたネットワーク名でリスニングするように構成されたOracle Fail Safeリスナーを新規作成します。

  2. スタンドアロン・データベース・リスナーを停止後、再起動して変更内容を有効にします。

  3. 新規のOracle Fail Safeリスナーを起動します。

新規クラスタ・グループ・リスナーが作成されると、Oracle Fail Safeによって元のリスナーから新規リスナーにポート番号が複製されます。たとえば、元のリスナーのADDRESSエントリでポート1521および1522ADDRESS_LISTに含まれている場合、新規リスナーは同じポート番号が含まれるADDRESS_LISTを作成します。

新規グループ・リスナーが作成されると、Oracle Fail Safeにより、クラスタ・グループ内のすべてのデータベースがIPCプロトコルを介してセキュアな登録を使用するよう強制されます。したがって、Oracle Fail SafeによってパラメータSECURE_REGISTER_group_listener_nameが値IPCで作成されます。

データベースがクラスタ・グループに追加され、グループに対して構成されているリスナーが存在しない場合、Oracle Fail Safeによってデータベースの現在のリスナーから新規グループ・リスナーにパラメータがコピーされます。たとえば、データベースが現在「listener」という名前のデフォルト・リスナーを使用しており、リスナーにはパラメータINBOUND_CONNECT_TIMEOUT_LISTENERlistener.oraファイルに含まれている場合、Oracle Fail Safeによって新規リスナー用にパラメータINBOUND_CONNECT_TIMEOUT_group_listener_nameが作成され、INBOUND_CONNECT_TIMEOUT_LISTENERパラメータに使用される値が割り当てられます。

Oracle Fail Safeにより行われるsqlnet.oraファイルの更新内容

シングルインスタンス・データベースに対するオペレーティング・システム認証を選択済の状態で、そのデータベースをグループに追加すると、(パラメータを設定済でない場合は) Oracle Fail Safeによって、sqlnet.oraファイルにSQLNET.AUTHENTICATION_SERVICES=(NTS)パラメータが追加されます。

可用性が高まるように構成されたデータベースでの外部プロシージャの使用方法

Oracle Fail Safeでは、新規グループ・リスナー用に外部プロシージャ・パラメータは作成されません。ご使用のアプリケーションで外部プロシージャが使用されている場合、クラスタ内の各ノードのlistener.oraおよびtnsname.oraファイルを手動で編集し、アプリケーションが使用する外部プロシージャに必要なパラメータを追加する必要があります。

共有サーバーを使用するデータベースのサポート

次の各項では、共有サーバー構成を使用するシングルインスタンス・データベースがOracle Fail Safeでどのようにサポートされるかを説明します。

注意:

データベースを共有サーバー構成用に設定する場合、Oracle Fail Safeで内部操作専用のサーバー接続を引き続き使用できることを確認します。そのためには、各クラスタ・サーバー・ノード上のtnsnames.oraファイルのデータベースに対する、ネット・サービス名エントリの接続データ部分に(SERVER=DEDICATED)パラメータを指定します。(共有サーバーが使用されている状態でSERVERパラメータが指定されていない場合、デフォルトではリスナーが共有サーバーを使用して接続を確立します。)

Oracle8データベース用の共有サーバー

Oracle Fail Safeでは、共有サーバー構成を使用するシングルインスタンスのOracle8データベースがサポートされています。ただし、Oracle Fail Safeでは、共有サーバー構成が定義されているデータベース初期化ファイルは自動的に更新されません。

スタンドアロンのシングルインスタンス・データベースまたは現在グループ内のリソースであるシングルインスタンス・データベースを構成して共有サーバーを使用できます。どちらの場合も、次の手順を実行してデータベース初期化ファイルを更新する必要があります。

  1. 次のように、共有サーバー構成を使用して、シングルインスタンス・データベースを含むグループのリスナー・パラメータを決定します。

    1. データベースが存在するOracleホーム内のOracle Net構成ディレクトリでlistener.oraファイルを探します。

    2. listener.oraファイルでデータベースのSIDを検索し、TCPプロトコルを使用しているグループの最初のリスナー・アドレスを探します。

      たとえば、次のlistener.oraファイルの太字のテキストは、グループの最初のリスナー・アドレスを示します。

      LISTENER =                      (Entries for default Listener)
          (ADDRESS_LIST = 
                          .
                          .
                          .
      Fslvirtualnode =                (Entries for Fail Safe Listener) 
          (ADDRESS_LIST=              
              (ADDRESS= 
                  (PROTOCOL=IPC) 
                  (KEY=OFS1) 
              ) 
              (ADDRESS= 
                  (PROTOCOL=IPC) 
                  (KEY=805mts.world) 
              ) 
              (ADDRESS= 
                  (PROTOCOL=TCP) 
                  (Host=virtualnode) 
                  (Port=1521) 
              ) 
              (ADDRESS= 
                  (PROTOCOL=TCP) 
                  (Host=virtualnode) 
                  (Port=1526) 
              ) 
          ) 
       
      SID_LIST_Fslvirtualnode = 
          (SID_LIST= 
              (SID_DESC= 
                  (SID_NAME=OFS1) 
              ) 
          ) 
      
    3. ファイル内で(PROTOCOL=TCP)行を含む最初のアドレスを探し、アドレス・パラメータを単一行に書式設定します。次に例を示します。

      (ADDRESS=(PROTOCOL=TCP)(Host=virtualnode)(Port=1521))
      
  2. グループのリスナー・パラメータを使用するようにデータベース初期化ファイル(initofs1.oraなど)を更新します。これを行うには、次の手順を実行します:

    1. データベース初期化パラメータ・ファイルを開きます。

      データベースの初期化パラメータ・ファイルは、次のような共有相互接続上のディスクに存在する場合があります。

       H:\OFSDB\OFS1\PARAM\initofs1.ora 
      

      クラスタの各ノードにプライベート・ディスク上のファイルの固有のコピーがある場合は、すべてのコピーを更新する必要があります。

    2. データベース初期化パラメータ・ファイルで、次のパラメータを含む行を検索します。

      mts_listener_address
      
    3. mts_listener_addressパラメータの値を、手順1cで書式設定したリスナー・アドレスで置換します。

      たとえば、元のmts_listener_addressパラメータに次の値が含まれているとします。

      mts_listener_address = "(ADDRESS=(PROTOCOL=TCP)(HOST=node1)(PORT=1521))"
      

      この行を次の行で置換します。

      mts_listener_address = "(ADDRESS=(PROTOCOL=TCP)(HOST=virtualnode)(PORT=1521))" 
      
    4. データベース初期化ファイルを保存します。

  3. mts_serviceパラメータの値がデータベースSIDであることを確認します。

    Database Configuration Assistantは、mts_serviceパラメータの値にデータベース名を使用することがあります。その場合は、値をデータベースSIDに変更します。

  4. グループ内リソースを停止し、再起動します。

    変更を反映するには、Oracle Fail Safe ManagerまたはFSCMDコマンドを使用して、データベースを含むグループをオフラインにしてから、再びオンラインにします。これにより、グループ内のすべてのリソースが停止し、再開します。

データベース用の共有サーバー

共有サーバー構成を使用するには、データベース・パラメータ・ファイルを変更する必要があることがあります。

リスナー情報は、共有サーバー構成のLOCAL_LISTENERパラメータまたはDISPATCHERSパラメータのいずれかに指定できます。

共有サーバー構成で、LOCAL_LISTENERパラメータを使用して完全なリスナー情報を指定する場合(完全なリスナー情報にはホストとポートの両方の値が含まれる)は、Oracle Fail Safeにより、「リソースをグループに追加」操作中に共有サーバー構成用のデータベース・パラメータ・ファイルが自動的に更新されます。

グループに追加されたシングルインスタンス・データベースは、共有サーバー・モードで稼働します。データベース・パラメータ・ファイルはそれ以上変更しないでください。

次の例は、Oracle Fail Safeにより自動的に更新される共有サーバー構成を示します。

dispatchers = "(PROTOCOL=TCP)(DISPATCHERS=1)"
local_listener = "(ADDRESS=(PROTOCOL=TCP)(HOST=124.7.56.1)(PORT=1521))"

データベースをグループに追加すると、Oracle Fail SafeではLOCAL_LISTENERパラメータを更新し、そのグループのリスナー情報を使用します。

ただし、共有サーバー構成でDISPATCHERSパラメータを使用して完全なリスナー情報を指定する場合は、DISPATCHERSパラメータからホストとポートの値を削除します。Oracle Fail Safeでは、常にLOCAL_LISTENERパラメータをデータベース・パラメータ・ファイルに書き込みます。

Oracle Fail Safe Managerを使用してデータベースをグループから削除すると、データベース初期化ファイルからLOCAL_LISTENERパラメータが削除されます。「共有サーバーの構成とスタンドアロン・データベース」の手順に従って、パラメータをデータベース初期化ファイルに追加する必要があります。

シングルインスタンス・データベースのセキュリティ要件

シングルインスタンスOracle Databaseを管理するには、SYSDBA権限を付与されたデータベース管理者アカウントを使用します。これにより、リモート・クライアントからOracle Databaseを管理できます。

シングルインスタンスのサンプル・データベースを作成する場合や、グループにシングルインスタンス・データベースを追加する場合、Oracle Fail Safeではオペレーティング・システム認証またはSYSユーザー・アカウントを使用してデータベースにアクセスする必要があります。ユーザーがSYSアカウントを使用してデータベースにアクセスする場合は、認証パスワード・ファイルを使用してデータベース初期化パラメータ・ファイル(initdatabase-name.ora)内の初期化パラメータREMOTE_LOGIN_PASSWORDFILESHAREDまたは EXCLUSIVEに設定します。ユーザーがオペレーティング・システム認証のみを使用してデータベースにアクセスする場合は、REMOTE_LOGIN_PASSWORDFILENONEに設定します。

注意:

Oracle Fail Safeでは、WindowsレジストリのDBA_AUTHORIZATIONパラメータをBYPASSの値に設定できません。

データベース管理者認証およびREMOTE_LOGIN_PASSWORDFILEパラメータの詳細は、『Oracle Database管理者ガイド』を参照してください。

クラスタ・ノード上のパスワード・ファイルの同期化

データベースのパスワード・ファイルはプライベート・ディスクに格納されます。一方のクラスタ・ノードでパスワード・ファイルに対して行った変更内容は、他方のクラスタ・ノード上の対応するファイルに自動的には適用されません。

1つのクラスタ・ノード上のパスワード・ファイルにアカウントを追加した場合は、データベース・インスタンスを実行するよう構成されている他のクラスタ・ノード上のパスワード・ファイルにもそのアカウントを追加する必要があります。パスワード・ファイルにSYS以外のアカウントも格納されている場合は、シングルインスタンス・フェイルセーフ・データベース用に、他のクラスタ・ノードで追加アカウントのSYSOPERおよびSYSDBA権限を付与する必要があります。

Oracle Fail Safe Managerのリソースをグループに追加ウィザードを使用してシングルインスタンス・データベースをグループに追加する場合、Oracle Fail Safeはデータベースを実行するために構成される他のノード上にデータベース・インスタンスを作成し、パスワード・ファイルのユーザーの最大数にデフォルト値を使用します。インスタンスが作成されたノード上のパスワード・ファイルには、リソースをグループに追加ウィザードで指定したSYSアカウントのパスワードのみが含まれます。

データベース・インスタンスが稼働するように構成された他のノードで、次の手順を実行して、他のクラスタ・ノード上のパスワード・ファイルを同期化します。

  1. パスワード・ファイル内のアカウント数がデフォルトの最大値を超える場合は、新しいパスワード・ファイルを作成します。そうしない場合は、手順2に移ります。

    新しいパスワード・ファイルを作成するには、Oracle Databaseの該当するリリースの管理者ガイドで、パスワード・ファイルの作成方法の手順を参照してください。

  2. シングルインスタンス・データベースを含むグループを、そのデータベース・インスタンスが稼働するように構成された他のノードに移します。
  3. データベースを移した先のノードで、SYS以外のアカウントに権限を付与します。
  4. データベースが稼働するように構成された各クラスタ・ノードに対して、手順23を繰り返します。

    これで、データベース・インスタンスが稼働するように構成されたすべてのノードで、パスワード・ファイルのローカル・コピーが同一のものになります。

SYSアカウントのパスワードの変更

SYSアカウントのパスワードは、データベースに関連付けられているOracleホームにあるパスワード・ファイルに通常格納されます。各クラスタ・ノードにデータベースに使用するOracleホームがあるため、データベースがクラスタ・リソースである場合に保持する複数のパスワード・ファイルが存在します。SYSアカウントのパスワードを変更するには、変更をデータベースに関連付けられているクラスタの各Oracleホームに伝播できるように、Oracle Fail Safe Managerユーティリティを使用します。Oracle Fail Safeで使用するパスワード・メンテナンス戦略を妨げる可能性があるため、SQL*Plusまたは他のユーティリティを使用してSYSアカウント・パスワードを変更しないでください。

データベース・リソースのパスワードを変更するには「プロパティ」ページを使用します。Oracle Fail Safe Managerで、次の手順を実行します。
  1. クラスタ・リソース・リストからデータベースを選択し、「アクション」メニューの「プロパティ」をクリックします。

  2. リソースのプロパティ・ページが表示されます。

  3. オペレーティング・システム認証が使用されない場合は、パスワード・フィールドが表示されます。

ほとんどのデータベースでは、パスワードの変更がただちに適用されます。ただし、データベース・パスワード・ファイルが共有されている場合、パスワードの変更を反映するにはデータベースを再度オープンする必要があります。これは、データベース・クラスタ・リソースをオフラインにしてから、オンラインに戻すことで行うことができます。または、データベースを所有するクラスタ・グループをクラスタ内の別のノードに移動できます。

Oracle Database Upgrade Assistantを使用したフェイルセーフ・データベースのアップグレード

この項では、Oracle Database Upgrade Assistantを使用して異なるリリース間でシングルインスタンス・フェイルセーフ・データベースをアップグレードする方法、あるいは異なるOracleホーム間でシングルインスタンスOracle Databaseを移動する方法について説明します。

アップグレードまたは新規Oracleホームに移動するシングルインスタンス・データベースのそれぞれに対して、次の手順を実行します。

  1. シングルインスタンス・データベースをグループから削除します。

  2. シングルインスタンス・データベースの移動先またはアップグレード先となるOracleホームから、Oracle Database Upgrade Assistantを実行します。

  3. アップグレードするシングルインスタンス・データベースのデータベース・パラメータ・ファイルの場所を把握しておきます。データベースをアップグレードする際に、データベース・パラメータ・ファイルが変換されます。データベース・パラメータ・ファイルがクラスタ・ディスク上にある場合、パラメータ・ファイルはOracle Fail Safeによる変換に適した場所に置かれます。データベース・パラメータ・ファイルがプライベート・ディスク上にある場合、Oracle Database Upgrade Assistantはそのローカル・コピーのみを変換します。この場合、他のクラスタ・ノード上のコピーも編集し、適切な変更を加える必要があります。

  4. Oracle Database Upgrade Assistantで求められる変換済データベース・ファイルの場所を指定します。データファイルを現在の場所のままにしておくか、またはローカル・ノードから現在アクセス可能なクラスタ・ディスクを指定します。後者を選択する場合、そのクラスタ・ディスクが他のグループによって使用されていないことを確認してください。

  5. Oracle7データベースをOracle8データベースにアップグレードする場合、Oracle Database Upgrade Assistantでは<Oracle_Home>\database\mig<SID>.oraという新しいデータ・ファイル(SIDはデータベース・インスタンス名)がプライベート・ディスクに作成されます。次のように、この新しいデータ・ファイルを、他のデータ・ファイルがあるクラスタ・ディスクに移動します。

    1. SQL*Plusを使用してデータベースに接続し、シャットダウンします。

      SQL> SHUTDOWN
      
    2. <Oracle_Home>\database\mig<SID>.oraファイル(<SID>はデータベース・インスタンス名)をクラスタ・ディスクにコピーします。

    3. SQL*Plusを使用してデータベースに接続し、次のコマンドを実行します。

      SQL> STARTUP PFILE=init<SID>.ora MOUNT 
      SQL> ALTER DATABASE RENAME FILE  
      '<Oracle_Home>\database\mig<SID>.ora' TO 
      'cluster_disk\mig<SID>.ora'; 
      SQL> SHUTDOWN 
      SQL> EXIT 
      
  6. Oracle Database Upgrade Assistantによって、グループ内のすべてのデータベースがアップグレードまたは新規Oracleホームに移動されてから、Oracle Fail Safe Managerを使用して、次のようにデータベースをグループに戻し、データベースをオンライン化します。

    1. 使用可能なリソースをグループに追加するには、グループに追加するリソースを選択し、「Oracleリソース」ビューの「アクション」メニューから「リソースの追加」を選択します。

    2. 「リソースをグループに追加」ガイド付きプロセス・ウィザードが開き、クラスタ・リソースの構成を示します。

Oracle Database Upgrade Assistantを使用して、あるグループ内の1つのデータベースを新規のOracleホームに移動する場合、そのグループ内のすべてのデータベースが同じOracleホームを使用する必要があります。

高可用性のためのctxsrvサーバーの構成

Oracle9iより前のOracleデータベース・サーバーのリリースでは、ctxsrvサーバーはドキュメントの索引付け、検索、取得および表示用のバックグランド・データ操作言語(DML)を処理します。(Oracle9iからは、標準SQLまたはPL/SQLプロシージャでドキュメントを索引付け、検索、取得および表示できます。)

ctxsrvサーバーをシングルインスタンスのOracleデータベース・サーバーとともに使用している場合は、次のように高可用性用のctxsrvサーバーを構成できます。

  1. ctxsrvサーバーを起動するバッチ・ファイルを作成し、パーソナリティ・マスクを指定します。たとえば、次のコマンド・ラインを含むcontext.batという名前のファイルを作成します。

    ctxsrv -user CTXSYS/CTXSYS -personality QDM
    
  2. Windowsフェイルオーバー・クラスタ・マネージャを開き、次のようにctxsrvサーバーを高可用性汎用アプリケーションとして構成します。

    1. 「ファイル」メニューで、「新規」「リソース」の順にクリックします。

    2. 「新しいリソース」ページで、次の操作を行います。

      • 「名前」フィールドで、ctxsrvサーバーの名前を入力します。

      • 「説明」フィールドで、必要に応じてctxsrvサーバーの説明を入力します。

      • 「リソースの種類」フィールドで、「汎用アプリケーション」を選択します。

      • 「グループ」フィールドで、ctxsrvサーバーが関連付けられているデータベースを含むグループを選択します。

    3. 「実行可能な所有者」ページで、ctxsrvサーバーをオンラインにできるクラスタ内のノードを指定します。これらは、ctxsrvサーバーが関連付けられているシングルインスタンス・データベースの実行可能な所有者である必要があります。

    4. 「依存関係」ページで、ctxsrvサーバーが関連付けられているシングルインスタンス・データベースをリソース依存関係として指定します。ctxsrvサーバーにディスク依存関係(データベースで必要な依存関係以外)がある場合は、1つまたは複数のディスクもリソース依存関係として指定します。

    5. 「汎用アプリケーション パラメータ」ページで、次の操作を行います。

      • 「コマンド ライン」フィールドで、前に作成したバッチ・ファイルのファイル仕様を入力します。たとえば、context.batなどです。

      • 「現在のディレクトリ」フィールドで、ctxsrvサーバーがインストールされたディレクトリ(たとえば、D:\Orant\bin)を入力します。

    6. 「レジストリのレプリケーション」ページでは、レジストリ・キーを入力する必要はありません。「完了」をクリックします。

構成を完了した後、クラスタ・サービスは.batファイルを起動し、コマンド・ウィンドウを開いてctxsrvサーバー・ロギング情報を表示します。誰かがコマンド・ウィンドウを閉じると、別のコマンド・ウィンドウがすぐに開き、ctxsrvサーバーは通常どおり検索を続行します。ctxsrvサーバーを含むグループがフェイルオーバーした場合、操作および検索機能は通常どおり続行されます。

Oracle Enterprise Managerとの統合

Oracle Enterprise Managerを使用して、Oracle Fail Safe環境のシングルインスタンス・データベースを管理および監視します。たとえば、Oracle Enterprise Managerを使用して次のことができます。

  • クラスタの検出

    Oracle Enterprise ManagerがOracle Fail Safeクラスタを検出するには、nmiconf.lstファイルを編集し、リストの最初のエントリとしてfs_discover.tclを追加する必要があります。これは、クラスタのすべてのノードで実行する必要があります。Oracle Intelligent Agentsを複数のOracleホームから使用している場合は、Oracleホームの1つにfs_discover.tclエントリを追加します。nmiconf.lstファイルはOracle_Home\NETWORK\AGENT\CONFIGにあります。

  • グループ(仮想サーバー)の検出

    注意:

    Oracle Enterprise Managerのグループごとに検出を実行して、そのグループに構成されているリソースを確認する必要があります。検出されると、各グループはOracle Enterprise Managerノード・リストにノードとして表示され、スタンドアロン・リソースの管理と同じようにグループ内のリソースを管理できます。

  • スタンドアロン・データベースの場合と同様に、グループ内のデータベースのジョブとイベントを作成および登録します

  • グループのジョブとイベントを物理ノード(ホスト)であるかのように作成および登録します。

    グループはOracle Enterprise Managerからホストのように見えます。

関連項目:

Oracle Enterprise Managerとの統合に関連する問題のトラブルシューティングについては、「セキュリティ・アクセスおよび認証の問題」を参照してください。

グループへのOracle Management Agentの追加

グループにシングルインスタンス・データベースを追加した後で、リソースをグループに追加ウィザードをもう一度実行してOracle Management Agentをそのグループに追加します。ウィザードには、図7-10に示すようなダイアログ・ボックスが表示されます。

図7-10 リソースをグループに追加ウィザード - 「リソース」ページ

図7-10の説明が続きます
「図7-10 「リソースをグループに追加ウィザード - 「リソース」ページ」の説明

グループ内のデータベース数にかかわらず、グループにはOracle Management Agentを1つのみ追加します。ただし、Oracle Management Agentを追加するには、グループに少なくとも1つのデータベース・リソースが含まれている必要があります。同様に、最初にOracle Management Agentを削除してからでないと、グループから最後のデータベース・リソースを削除できません。

Oracle Management Agentをグループに追加することを指定する場合:

  • Oracle Fail Safeでは新しいManagement Agentが作成されます

  • 新しいManagement Agentは、クラスタ・ディスクの1つ(リソースをグループに追加ウィザードを実行してOracle Management Agentを追加したときに指定)を使用してジョブおよびイベント情報を格納します

  • Oracle Fail Safeは、新しいManagement Agentを構成してグループの一部にします。

    • Oracle Management Agentは、データベースに関連付けられた仮想アドレスでリスニングするように構成されます。

    • Oracle Management Agentはグループでフェイルオーバーします。

Oracle Enterprise Managerを使用してクラスタに構成されたOracleデータベースおよび監視イベント(フェイルオーバーなど)用のジョブをスケジューリングする方法の詳細は、Oracle Fail Safeのヘルプを参照してください。

シングルインスタンス・データベース・リカバリの最適化

Oracle Fail Safeによって可用性が高まるように構成されたOracle Databaseでは、予定外に発生したシステム・ダウンおよび(ソフトウェア・アップグレードや定期メンテナンスなどの)計画的システム・ダウンの際に、高速フェイルオーバーと高速リカバリを実現できます。Oracleのファスト・スタートおよび障害時リカバリ機能を利用して、データベース・リカバリに費やされる時間を制御し、Oracle Fail Safeにより可用性が高くなるように構成されたデータベースを連続的に監視することができます。

Oracle Fail SafeとOracle Databaseテクノロジにより、計画的/計画外いずれのフェイルオーバーの場合も、あるノードでデータベースを停止して別のノードでインスタンスを完全にリカバリするまでの所要時間が最適化されます。Oracle Databaseのチェックポイント・アルゴリズムにより、計画的および計画外フェイルオーバーでのインスタンスのリカバリ時間が最適化されます。

計画的フェイルオーバーの実行にOracle Fail Safe Manager(またはPowerShellコマンドレット)を使用すると、Oracle Fail Safeでは、シングルインスタンスOracle Databaseを停止する前にそのチェックポイントを取得します。インスタンス・リカバリを即時に完了し、データベース・クライアントでデータベースをすぐに利用できるように、別のノードのシングルインスタンス・データベースは制限付きモードで起動されます。(計画的フェイルオーバーの実行にMicrosoft Windowsフェイルオーバー・クラスタを使用した場合、データベースが停止される前のチェックポイントの取得は行われません。)

注意:

Oracle Fail Safe Manager、Oracle Fail Safe PowerShellコマンドレットまたはWindowsフェイルオーバー・クラスタ以外のツールを使用してデータベースをオフライン化すると、Oracle Fail Safeではそれを障害の発生したリソースとみなし、再度オンライン化を試行します。

計画外フェイルオーバーの場合、インスタンス・リカバリの時間はデータベース・リカバリ処理によって制御されます。

シングルインスタンス・フェイルセーフ・データベースに対する管理作業の実行

可用性が向上するように構成されたデータベースに対する管理作業も、他のデータベースと同様にして実行します。ただし、データベースへのアクセスを制限する操作、またはフェイルオーバー機能を一時的に使用不可にする操作の途中でデータベースをオフラインにする(およびクラスタでのデータベースの監視を停止する)場合は、Oracle Fail Safe ManagerまたはPowerShellコマンドレット・コマンドライン・インタフェース(「PowerShellコマンド」を参照)を使用します。これには、コールド・バックアップ操作、ユーザーがデータベースにアクセス中に実行する必要のある管理操作やMicrosoft Windowsフェイルオーバー・クラスタによる定期的なIs Aliveポーリング中の応答時間に影響する操作が含まれます。

Oracle Fail Safe Managerを使用してグループ内に構成されているデータベースに対して管理作業を実行するには、次の手順に従います。

  1. Oracle Fail Safe ManagerまたはFail Safe PowerShellコマンドレットを使用して、データベースをオフライン化して停止し、クラスタによるデータベースの監視を中止します。データベースに接続されているユーザーはすべて切断されます。
  2. SQL*Plusなどのツールを使用し、データベースを起動して管理作業を実行します。データベースが起動されている間、ユーザーはデータベースにアクセスできます。
  3. 管理作業を完了した後、SQL*Plusなどのツールを使用してデータベースを停止します。
  4. Oracle Fail Safe ManagerまたはFail Safe PowerShellコマンドレットを使用し、データベースを再度オンライン化します。クラスタによるデータベースの監視が再開されます。

管理作業の途中で、(新しい表領域や関連データファイルの追加など)データベースの構成を変更する操作を行った場合は、「検証」グループ操作を実行します。新規データファイルを追加すると、グループが新しいディスクに依存する可能性があります。「検証」グループ操作を実行すると、ディスクがクラスタ・ディスクであり、別のグループには属していないことが確認されます。新規データファイルの追加によりグループが新しいディスクに依存する場合、ディスクはデータベースと同じグループに追加され、新規ディスクが正常にデータベースとともにフェイルオーバーするよう、クラスタ・レジストリ内の情報が更新されます。

データベース・ホーム

Oracle Database 12cリリース1 (12.1)以降、Oracle Databaseでは、インストール時に指定されるOracleホーム・ユーザーの使用がサポートされます。Oracleホーム・ユーザーは、ドメイン・ユーザー・アカウントである必要があります。Oracleホーム・ユーザーは、Oracleホームに関連付けられます。同じOracleホームを使用するクラスタのすべてのノードで同じOracleホーム・ユーザーを使用していることを確認してください。

Oracle Fail Safeでは、データベースにアクセスする際、通常は同じOracle Databaseホームを使用してシステムのデータベースにアクセスします。Oracle Fail Safeは、サーバーの起動時にデータベース・ホームを選択します。Oracle Fail Safeはすべてのデータベース・ホームをスキャンして、最上位のソフトウェア・バージョンが含まれるホームを検索します。最初は、システムのPATH環境変数に\binパスが含まれるホームのみを検索します。Oracle Fail SafeはシステムのPATHにデータベース・ホームが見つからない場合、すべてのデータベース・ホームをスキャンして、最上位のバージョンが含まれるホームを検索します。

Oracle Fail Safeでは、起動時にデータベース・ホームが選択されるため、Oracle Fail Safe起動後にインストールされたデータベース・ホームは認識されないことに注意してください。Oracle Fail Safeのサーバーおよびリソース・モニターを再起動しないと、Oracle Fail Safeは新しいデータベース・ホームを使用できるとはみなしません。新しいバージョンのOracle Databaseをインストールした後は、Oracle Fail Safeが新しいデータベース・ホームを使用できるように、すべてのノードでCluster Serviceサービスを再起動する必要があります。

クラスタにより管理されているデータベースがある場合は、データベース・ホームがクラスタ内の各ノードのローカル・ディスクにインストールされている必要があります。データベース・ホームが共有クラスタ・ディスクにインストールされている場合、システムのPATH環境変数にその\binディレクトリを含めないでください。

データベースにアクセスできるOracle Fail Safeコンポーネントは、次の2種類です。

  1. Oracle Fail Safeサーバー(OracleMSCSServices)

  2. Oracle Fail Safeデータベース・リソースDLL(FsResOdbs.dll)

通常、サーバーがデータベースにアクセスするのは、データベース・リソースを構成(リソースを追加または削除)するときか、操作を検証するときのみです。通常のシステム操作中にOracle Fail Safeサーバーがデータベースにアクセスすることはありません。

データベースまたはリスナー・リソースがクラスタによって参照されると、Windows Cluster ServiceによってリソースDLLが呼び出されます。たとえば、データベースがオンライン化されるとき、IsAliveポーリング中、リソースが別の仮想ノードにフェイルオーバーされるときなどです。複数のデータベース・ホームが存在するシステムでは、そのデータベースのインスタンスで使用されるデータベース・ホーム・ソフトウェアと同じデータベース・ホーム・ソフトウェアを使用して、各データベースをアクセス先のシステムに置く必要があることがあります。Oracle Fail Safe Managerで表示されるリソース・プロパティ・ページの「このリソースを別のリソース・モニターで実行」チェック・ボックスを選択すると、リソースが個別のリソース・モニター・プロセスで実行されるよう構成することが可能です。このオプションが有効になっている場合、データベースのリソース・モニター・プロセスでは、データベース・アクセスの際に、システムの最上位バージョンのデータベース・ホームが常に使用されるのではなく、データベース・インスタンスの実行に使用されるデータベース・ホームが使用されます。データベース・リスナー・リソースを参照する際には、リソースDLLでは、「このリソースを別のリソース・モニターで実行」オプションの設定に関係なく、リスナー・サービスの起動に使用される\binパスからのソフトウェアが常に使用されます。

データベースにアクセスする際にOracle Fail Safeコンポーネントにより使用されるユーザー・アカウントの詳細は、「Oracle Fail Safeサービス」を参照してください。

透過的アプリケーション・フェイルオーバー(TAF)の構成

スタンドアロン・シングルインスタンス・データベースの場合、透過的アプリケーション・フェイルオーバー(TAF)が発生すると、Oracle Netは別のリスナーに接続して障害の発生したデータベースへの再接続を確立します。このため、ユーザーは元の接続が維持されている場合と同じように、新しい接続を使用して作業を続行できます。スタンドアロン・シングルインスタンス・データベースの場合とシングルインスタンスOracle Fail Safeデータベースの場合では、TAF機能による実際の処理は異なります。Oracle Fail Safeデータベースの場合、透過的アプリケーション・フェイルオーバーにより、(グループのフェイルオーバーによって別のクラスタ・ノードに移動した)同じリスナーに再接続するようにOracle Netに指示されます。

スタンドアロン・データベースの場合、TAFのフェイルオーバーという語句は、Oracle Netによってあるリスナーから別のリスナーに接続がフェイルオーバーされることを指します。Oracle Fail Safeデータベースの場合、TAFのフェイルオーバーという語句の使用方法に多少誤りがあります。この場合、アプリケーションではなく、アプリケーションに接続されているリスナーのフェイルオーバーによって再接続が確立されます。

実装にはこのような違いがありますが、TAFを管理する方法は同じです。

Oracle Fail Safeで構成されるデータベースに接続する場合に透過的アプリケーション・フェイルオーバーを利用するには、クライアント・アプリケーションはOracle Netを介してOracle Databaseに接続する必要があります。

TAFでは、グループ・フェイルオーバーの後、クライアントは明示的に再接続を行いません。OCI接続がクライアント・アプリケーションの再接続と状態のリカバリを自動的に処理します。実際、障害の発生時にデータベースを頻繁に更新していた場合を除き、アプリケーション側ではフェイルオーバーの発生に気付かない場合があります。

透過的アプリケーション・フェイルオーバーの詳細は、Oracle Net Services管理者ガイドを参照してください。

データベースに関連するエラー処理と問題のトラブルシューティング

次の各項では、Oracle Fail Safeが高可用性シングルインスタンス・データベースをオンラインにしようとしたときに発生するエラーの処理方法について説明します。高可用性用に構成されたシングルインスタンスOracleデータベースの特定の問題のトラブルシューティングについても説明します。

データベースをオンライン化する際に発生するエラーの処理

Oracle Fail Safeがシングルインスタンス・データベースのオンライン化を試行した際に発生するエラーを処理するスクリプトを作成できます。Oracle Fail Safeでは、クラスタ上のすべてのシングルインスタンス・フェイルセーフ・データベースに同じスクリプトを使用します。

エラー処理スクリプトを指定するには、次のようにします。

  1. エラーを処理するスクリプトを作成します。
  2. スクリプトにFsDbError.batという名前を付けます。
  3. スクリプトが成功した場合は0を返し、失敗した場合は0以外の整数を返すことを確認します。
  4. データベース・リソースの可能所有者である各クラスタ・ノードの次のディレクトリにスクリプトを置き、ファイル所有者がそのクラスタ・ノードに対するローカル管理者権限を持っていることを確認します。
    Oracle_Home\FailSafe\Server\scripts
    

シングルインスタンス・データベースをオンライン化できない場合、Oracle Fail Safeは次のように、最初にスクリプトを実行するプロセスを生成し、エラー・コード、データベース名、データベースSID、TNSサービス名およびデータベース・パラメータ・ファイル指定をスクリプトに渡してスクリプトを実行します。

FsDbError.bat error-code database-name SID TNS service name parameter-file-spec

次に例を示します。

FsDbError.bat ORA-01113 OracleDB OracleDB OracleDB.WORLD D:\Ora\admin\OracleDB\pfile\initOracleDB.ora

スクリプトを実行しているプロセスは、データベース・リソースの「保留タイムアウト」値で指定された期間、スクリプトの終了を待機します。スクリプトが保留タイムアウト期間内に終了しない場合、スクリプトは終了させられます。

Oracle Fail Safeは、Windowsイベント ログにイベントを記録し、スクリプトが成功したか、失敗したか、Oracle Fail Safeによって終了させられたかを示します。スクリプトが失敗した場合は、エラー・コードもイベント ログに書き込まれます。

スクリプトの成否にかかわらず、Oracle Fail Safeでは、データベースの再起動ポリシーおよびフェイルオーバー・ポリシーの定義に従ってシングルインスタンス・データベースのオンライン化の試行が継続されます。

問題のトラブルシューティング

多くの場合、問題のトラブルシューティングでは、まず「検証」クラスタ、「検証」グループ、または「検証」スタンドアロン・データベース・アクションを選択します。これらのツールについては、「アクションの検証」で概要を説明しています。「検証」アクションを実行しても問題の原因を特定できない場合は、Windowsアプリケーション・イベント・ログを確認して、エラー・メッセージがポストされていないかを調べます。操作が失敗した場合、Oracleサポートによりトレースを有効にするように求められることがあります。Oracle Fail Safeトレースの有効化の詳細は、「Oracleサポート・サービスへの連絡」を参照してください。

シングルインスタンス・データベースを含むグループに対して「検証」アクションを選択すると、Oracle Fail Safeでは次のことを行います。

  • グループ内の各データベースに問い合せて、使用されているディスクを特定します。その後、そのディスクがクラスタ・ディスクであるか、すでにグループに追加されているかをチェックします。(たとえば、可用性が高まるように構成された後にデータベースにディスクが追加されたために)ディスクの有効性検査が失敗した場合、「検証」グループ・アクションでは、問題を修正する前に確認を求められます。

  • ディスク・ドライブの変更を検出し、必要に応じてリソースの依存性を更新します。

  • Oracle Net構成が正しいかどうかを確認します。

  • グループ内のリソースの構成に誤りがあれば修正します。

いつでも「検証」グループ・アクションを選択できます。ただし、次の状況が発生した場合は、必ず実行してください。

  • グループまたはグループ内のリソースがオンライン化されない場合。

  • フェイルオーバーまたはフェイルバックが予定どおりに実行されない場合。

  • グループに構成されているシングルインスタンス・データベースにディスクを追加する場合。

  • クラスタに新しいノードが追加された場合。

たとえば、Oracle Fail Safe Managerを使用してクラスタ構成を更新せずに、シングルインスタンス・データベースに新しいディスクを追加した場合を考えてみます。その後サーバー・ノードが停止しても、フェイルオーバーは適切に実行されません。これは、クラスタ・ソフトウェアに構成の変更を通知していないことによるものです。この問題を回避するため、シングルインスタンス・データベースの構造を変更したときは、必ずそのデータベースを含むグループを検証してください。グループを検証すると、Oracle Fail Safeでは自動的に変更を検出し、クラスタ構成を更新します。前述の例では、Oracle Fail Safeは、ユーザーにかわって新しいディスクをグループに追加します。

グループの検証で問題が検出された場合、Oracle Fail Safeは問題を修正するための応答を求めるか、または問題を詳しく説明したエラー・メッセージを返します。

データベースをグループに追加する際の問題

データベースをグループに追加する際、リスナーまたはデータベース・リソースがオンライン化に失敗すると、Oracle Fail Safe Managerによって詳細なエラー情報が表示されない可能性があります。Oracle Fail Safeのリソース・コントロール・マネージャにより、エラー情報はWindowsアプリケーションのイベント・ログにロギングされます。その他のエラー情報は、「Oracleサポート・サービスへの連絡」を参照してください。

グループのオンライン化の問題

シングルインスタンス・データベースが含まれるグループをオンライン化する際に問題が発生した場合は、次の操作を実行します。

  • グループを検証します。

    (Oracle Fail Safe Managerグループの「アクション」メニューから)「検証」を選択すると、Oracle Fail Safeではグループの構成をチェックし、問題が見つかると修正を行います。

    「検証」グループ・アクションで問題が見つかった場合は、その問題を手動で解決するヒントとなるエラー・メッセージが返されます。

  • Oracle Netのリスナー・ログを確認します。

    Oracle Netでは、エラーの検出や、リスナーを介したデータベースへのアクセスのたびに、リスナー・ログ・ファイルにエントリを作成します。このログ・ファイルの中に、問題の識別に役立つエラーがないかどうかを調べます。

  • Oracle Net構成データを確認します。

    サーバー・システム上のlistener.oraファイル、およびサーバーとクライアントの両方のシステム上の tnsnames.oraファイルには、クラスタ内のグループに対する有効な仮想サーバー・アドレスが含まれている必要があります。

  • グループ内の各リソースを個別にオンライン化します。

    グループ内に複数のシングルインスタンス・データベースが存在する場合、この方法で問題の原因となっているデータベースを識別できます。

  • 「拡張ポリシー」プロパティ・ページで指定されたシングルインスタンス・データベースの「保留タイムアウト」値が十分であることを確認します。

    データベースが含まれるグループがオンライン化に失敗する場合、または頻繁にフェイルオーバーする場合は、「保留タイムアウト」値が正しく設定されているか確認してください。データベースの「保留タイムアウト」値の設定が低すぎると、オンライン化に失敗したり、フェイルオーバーが頻繁に発生します。

    「保留タイムアウト」の値を設定して、クラスタ・ソフトウェアでデータベースがオンライン(またはオフライン)になってから操作が失敗したと判断されるまでの時間を指定します。値は、遅いレスポンス時間がクラスタ・システムにより使用不可状態と判断されることがない程度に大きく、かつ障害発生時のフェイルオーバー・レスポンス時間を最小限に抑えられる程度に小さく設定してください。

    「保留タイムアウト」値を設定するには、次のようにデータベース・プロパティを変更します。

    1. Oracle Fail Safe Managerのツリー・ビューで、データベース名を選択します。

    2. 「 拡張ポリシー」タブをクリックします。

    3. 「保留タイムアウト」ボックスで「保留タイムアウト」値を変更します。

  • ユーザーがSYSアカウントを使用してデータベースにアクセスする場合は、データベース初期化パラメータ・ファイル(initdatabase-name.ora)内の初期化パラメータREMOTE_LOGIN_PASSWORDFILESHAREDまたはEXCLUSIVEに設定されていることを確認します。

  • ユーザーがオペレーティング・システム認証のみを使用してデータベースにアクセスする場合は、データベース初期化パラメータ・ファイル内の初期化パラメータREMOTE_LOGIN_PASSWORDFILENONEに設定されていることを確認します。

  • Oracle Fail Safeでデータベースへのアクセスに使用するアカウントのパスワードが変更されている場合は、Oracle Fail Safe Managerでその変更を更新します。

    Oracle Fail Safeでデータベースへのアクセスに使用するアカウントのパスワードを変更後、Oracle Fail Safe Managerでその情報を更新しない場合、データベースに対するポーリングは失敗します。Oracle Fail Safeのデータベース・パスワードの変更を更新する方法の詳細は、「SYSアカウントのパスワードの変更」を参照してください。

プロセスが集中している操作の際のグループ・フェイルオーバー

プロセスが集中している操作(インポート操作など)では、Is Aliveポーリングが正常に実行されずに、予期しないグループ・フェイルオーバーが発生する場合があります。このような場合には、(Get-OracleClusterResource dbname).IsAliveEnabled=$falseコマンドを発行して、データベースに対するIs Aliveポーリングを使用不可にできます。Is Aliveポーリングを使用不可にする場合は、再度使用可能にするまで、Oracle Fail Safeによりインスタンスの監視が中止されるので注意してください。Is Aliveポーリングを再度使用可能にするには、(Get-OracleClusterResource dbname).IsAliveEnabled=$trueコマンドを使用します。

これらのPowerShellコマンドレットは、プロセスが集中している操作の完了時にIs Aliveポーリングを再度使用可能にできるようにスクリプト内から実行することをお薦めします。

PowerShellコマンドレット・コマンドの詳細は、「PowerShellコマンド」を参照してください。

データベース認証の問題

Oracle Fail Safeでシングルインスタンス・データベースをオンライン化またはオフライン化しようとして問題が発生することがあります。この問題の原因として、データベース認証の設定方法に問題があることが考えられます。この問題を解決するには、次の操作を実行します。

  • Oracle Databaseの「通常」プロパティ・ページでデータベースを認証する「SYSアカウントを使用」を選択した場合は、データベース初期化パラメータ・ファイル(initdatabase-name.ora)でREMOTE_LOGIN_PASSWORDFILE初期化パラメータがSHAREDまたはEXCLUSIVEに設定されていることを確認します。

    「シングルインスタンス・データベースのセキュリティ要件」に、データベース認証に対してこのパラメータを適切に設定する方法が記載されています。

  • Oracle Fail Safeでグループ内のデータベースにアクセスできることを確認します。

    グループの検証や、データベースがオンライン状態であることを確認するためのポーリングなど、Oracle Fail Safeにより実行される一部の操作では、Oracle Fail Safeでグループ内にあるデータベースにアクセスできる必要があります。データベース・アカウントのパスワードが変更されている場合は、Oracle Fail Safe Managerでその変更を更新します。更新しないと、Oracle Fail SafeでIs Aliveポーリングを使用するデータベースの監視ができなくなります。この状態は、Windowsアプリケーション・イベント・ログにより記録されます。

    「SYSアカウントのパスワードの変更」に、データベース・パスワードの正しい更新方法が記載されています。

仮想サーバーの構成で検出される問題

スタンドアロン・データベースまたはグループに構成されているデータベースに接続しようとして問題が検出された場合は、データベースのOracle Net構成を調べる必要があります。

Oracle Fail Safeは、「検証」グループおよび「検証」スタンドアロン・データベース操作を提供して、Oracle Net構成を検証および修正できます。詳細は、「Oracleリソースの構成の検証」および「スタンドアロン・データベースの検証」を参照してください。

ネットワーク名の構成で発生する問題

Oracle Fail Safeにより、ネットワーク名情報を構成する際、listener.oraおよびtnsnames.oraファイルが変更され、リスナーが停止および起動されます。発生する可能性のある問題と問題を解決するための処置を、次のリストに示します。

  • FS-10070 Oracle Net: name

    このメッセージ・コードは、Oracle Netのlistener.oraおよびtnsnames.oraファイルの解析(読込みまたは更新)に問題があることを報告するものです。

    • 不適切な更新やファイルの破損によりファイルが無効となった場合、Oracle Fail Safeではこれらのファイルを使用して仮想サーバー情報を構成できません。有効なバージョンのファイルを取得するか、Oracle Net Assistantを使用してファイルを作成しなおします。

    • これらのファイルが有効な場合は、操作で使用されているグループのネット・サービス名、データベースSIDおよびネットワーク名が正しいかどうかをチェックします。情報が不適切であると、仮想サーバーの構成でエラーが生じることがあります。同じデータベースSIDが、複数のリスナーに含まれていないことを確認してください。複数のOracleホームを伴ったシステムでは、すべてのlistener.oraファイルをチェックします。

  • FS-10436: Windowsサービスnameの起動に失敗しました。

    リスナーの定義変更や新規リスナーの定義作成後、Oracle Fail Safeではリスナーが起動されます。

    多くの場合、このエラーは、別のリスナーがすでにアドレスをリスニングしていることが原因で発生します。システム上で1つのリスナーにかぎり、特定のアドレスまたはデータベースSIDのリスニングが可能です。たとえば、LISTENER_Aが次のような定義の場合、システム上のその他のリスナーでは、IPCプロトコルを使用したキーORCLのリスニング、TCPプロトコルを使用したホストserver_Aでのポート1521のリスニング、またはORCL SID名のリスニングができません。

    LISTENER = 
        (ADDRESS_LIST=  
            (ADDRESS= 
                      (PROTOCOL=IPC) 
                     (KEY=ORCL) 
            ) 
            (ADDRESS=  
                (PROTOCOL=TCP) 
                (Host=server_A) 
                (Port=1521) 
            ) 
        ) 
     

    他のリスナーでLISTENER_Aと同じアドレスまたはデータベースSIDを使用しようとすると、起動に失敗します。

  • リスナーを起動できない一般的な原因のもう1つは、ネットワーク名です。リスナーが使用するネットワーク名は、Oracle Fail Safeがリスナーを起動しようとしているノード上でアクティブである必要があります。

ネットワーク構成の問題のトラブルシューティングに関する詳細は、Oracle Netのマニュアル(ログ・ディレクトリの情報を含む)を参照してください。

アーカイブされたlistener.oraまたはtnsnames.oraファイル

Oracle Fail Safeがlistener.oraまたはtnsnames.oraファイルを変更すると、そのファイルの元のバージョンが毎回アーカイブされます。Oracle Fail Safeによって変更される前のOracle Netのサービス名定義やリスナー定義を参照する必要がある場合は、構成ファイルのアーカイブ・バージョンを調べます。

Oracle Fail Safeでは、構成ファイルの以前のバージョンが保存されます。ファイルが更新されると、ファイルの以前のバージョンの名前がfilenametimestamp.oraに変更されます。filename.oraが最新のファイルです。

セキュリティ・アクセスおよび認証の問題

ほとんどの認証の問題は、クラスタ・ノード間でのデータベース・パスワード・ファイルのコピーの不整合が原因です。Fail Safeが、あるノードのデータベースにはアクセスでき、別ノードのデータベースにはアクセスできない場合、パスワード・ファイルは同期しなくなります。この問題はいくつかの方法で解決できます。

  • 動作しているノードから動作していないノードにパスワード・ファイルをコピーします。

  • Oracle Fail Safe Managerを使用してクラスタからデータベースを削除します。コマンドを削除し、「リソースの追加」コマンドを使用して再度追加します。

  • ORAPWDユーティリティを使用して、障害のあるノードでSYSパスワードを手動で更新します。

オペレーティング・システム認証が使用されている場合は、Oracle認証ローカル・ユーザー・グループに不整合がある場合があります。ユーザー・グループを検証するには、Oracle Fail Safe Managerを実行し、クラスタの「検証」コマンドを選択します。Oracle Fail Safeは、クラスタのすべてのノード上のすべてのOracle認証ローカル・ユーザー・グループのコンテンツを比較し、見つかった不整合をレポートします。

クライアントがデータベースにアクセスできない

ユーザーおよびクライアント・アプリケーションがグループ内に構成されているデータベースにアクセスできない場合は、次の手順を実行して問題を修正します。

  1. グループに対して仮想サーバーを使用するように、tnsnames.oraファイルを更新します。

  2. 「検証」グループ・アクションを選択して、ネットワーク(Oracle Net)構成の有効性を検査します。

プラガブル・データベースの起動および停止

Oracle Fail Safeにより、データベースがルート・コンテナであることが認識され、コンテナ・データベースが所有する個別のプラガブル・データベースが起動および停止されます。データベースがフェイルオーバーされるかクラスタ内の別のノードに移動されると、最後のSQL ALTER PLUGGABLE DATABASE ALL SAVE STATEコマンドで保存された状態を使用して、Oracle Fail Safeによって各プラガブル・データベースが起動されます。プラガブル・データベースの状態を保存するには、Oracle Database 12cパッチ・セット1 (12.1.0.2)が必要です。

Oracle Fail Safe Managerを使用して、コンテナ・データベース内の個々のプラガブル・データベースをオープンおよびクローズします。コンテナ・データベースの名前の横にある展開アイコンをクリックして、コンテナ・データベースが所有するプラガブル・データベースをリストします。プラガブル・データベースをオープンまたはクローズするには、リスト内の目的のデータベースをクリックしてから、「アクション」リストでオープンまたはクローズ・アクションを選択します。

図7-11 プラガブル・データベースの例

図7-11の説明が続きます
「図7-11 プラガブル・データベースの例」の説明

注意:

Oracle Fail Safe Managerで、コンテナ・データベースが所有するプラガブル・データベースに関する情報を表示するには、その前にコンテナ・データベース・クラスタ・リソースがオンラインになっている必要があります。

Oracle Fail Safeでは、プラガブル・データベースのオープンまたはクローズにトリガーの使用をサポートしていません。たとえば、次のようなトリガーは、フェイルオーバー・クラスタ内のデータベースに使用しないでください。

CREATE OR REPLACE TRIGGER sys.after_startup
AFTER STARTUP ON DATABASE
BEGIN
EXECUTE IMMEDIATE 'ALTER PLUGGABLE DATABASE ALL OPEN';
END after_startup;