ヘッダーをスキップ

Oracle Database 2日でReal Application Clustersガイド
11g リリース1(11.1)

E05737-03
目次
目次
索引
索引

戻る 次へ

7 サービスを使用したデータベース・ワークロードの管理

ワークロード管理を使用すると、ワークロードを複数のデータベース・インスタンスに分散し、ユーザーおよびアプリケーションに対するデータベースおよびクラスタのパフォーマンスを最適化できます。この章の内容は次のとおりです。

ワークロード管理の概要

Oracle Real Application Clusters(Oracle RAC)データベースのワークロード管理を実装する際は、複数の異なる機能を使用できます。この項の内容は次のとおりです。

Oracle RACおよび単一インスタンスのOracleデータベース環境をデプロイすると、ワークロード管理機能を様々な方法で使用できます。ノードの数や環境の複雑さおよび目的に応じて、最適なワークロード管理および高可用性構成を選択します。この項では、この選択時に考慮が必要な様々な事項について説明します。

Oracleサービスの概要

Oracle Database 10g では、サービスと呼ばれる自動ワークロード管理機能が導入されました。サービスとは、共通の属性、パフォーマンスしきい値、および優先順位を持つアプリケーションのワークロードです。単一のサービスで、1つのアプリケーション、複数のアプリケーション、または1つのアプリケーションのサブセットを表すことができます。単一のサービスをOracle RACデータベースの1つ以上のインスタンスに関連付けたり、単一のインスタンスで複数のサービスをサポートすることも可能です。サービスは、同じリソースのために競合するアプリケーションを管理するための単一のエンティティを提供し、各ワークロードを1つの単位として管理できるようにします。

ワークロードを管理するために、特定のアプリケーションまたはアプリケーションの一部の操作に割り当てるサービスを定義できます。サービスを使用して、異なるタイプの作業のワークロードを管理することもできます。たとえば、オンライン・ユーザー、バッチ処理およびレポートは、それぞれ異なるサービスを使用できます。

ユーザーまたはアプリケーションがデータベースに接続するときには、接続用のサービスを使用することをお薦めします。Oracle Databaseでは、データベースの作成時にデータベース・サービスが自動的に1つ作成されます。ほとんどのインストール環境では、このサービスのみで十分です。データベースを使用してワークロードをより柔軟に管理する場合は、複数のサービスを作成し、どのデータベース・インスタンスでサービスを提供するかを指定できます。

サービスはデータベース・リソース・マネージャに統合されます。ここで、インスタンス内のサービスで使用されるリソースを制限できます。また、Oracle Schedulerのジョブは、特定のインスタンスではなく、サービスを使用して実行できます。

参照:

 

高可用性サービスの構成の概要

サービスを作成する際に、そのサービスを通常サポートするインスタンスを定義します。このようなインスタンスを、そのサービスの優先インスタンスといいます。 また、サービスの優先インスタンスで障害が発生した場合にサービスをサポートする別のインスタンスを定義することもできます。このようなインスタンスをサービスの使用可能インスタンスといいます。

サービスの優先インスタンスを指定した場合、通常の処理では、そのサービスは優先インスタンスで稼働します。Oracle Clusterwareは、サービスがそのサービス用に構成されたすべての優先インスタンスで常に稼働している状態を維持しようとします。インスタンスに障害が発生すると、そのサービスは他の優先インスタンスまたは使用可能インスタンスのうちの1つに無作為に再配置されます。また、サービスを使用可能インスタンスに手動で再配置することもできます。サービスの作成時に優先インスタンスまたは使用可能インスタンスを指定しない場合、デフォルトでOracle RACデータベースのすべてのインスタンスがそのサービスの優先インスタンスになります。

サービスが使用可能インスタンスにフェイルオーバーした場合、そのサービスが優先インスタンスに自動的に戻ることはありません。ただし、コールアウトを使用すると、優先インスタンスへのサービスの再配置を自動化できます。コールアウトの詳細は、「FANコールアウトの概要」を参照してください。優先インスタンスにサービスを再配置するコールアウト・スクリプトの例は、Oracle Technology Networkの「Oracle Real Application Clusters Sample Code」セクション(http://www.oracle.com/technology/sample_code/products/rac/)で入手できます。

サービスに使用可能インスタンスを指定する必要はありません。ただし、サービスの優先インスタンスを構成する際にそのサービスに対して使用可能インスタンスを1つ以上指定しない場合、優先インスタンスが失敗してもサービスは他のインスタンスに再配置されません。

「未使用」としてインスタンスを指定することもできます。この設定により、サービスの優先インスタンスが失敗しても、そのサービスはインスタンスで稼働しません。

参照:

 

データベース・リソース・マネージャの概要

データベース・リソース・マネージャでは、ユーザー、アプリケーションおよびサービスに割り当てられたデータベース・リソースが制御されます。このアプローチにより、ユーザー、アプリケーションおよびサービスは使用可能な分のデータベース・リソースを受け取ります。また、データベース・リソース・マネージャによって、効率的に複数のアプリケーションおよび混合ワークロードをサポートするために、Oracle RACデータベースで1つ以上のノードを実行できます。

データベース・リソース・マネージャには、OracleデータベースまたはOracle RAC環境内の作業に優先度を設定する機能があります。たとえば、オンライン・ワーカーなどの優先度の高いユーザーに多くのリソースを割り当ててレスポンス時間を最短に抑え、バッチ・ジョブやレポートなどの優先度の低いユーザーには割り当てるレスポンスの量を抑えて実行時間を長くできます。この方法では、リソースをより細かく制御できます。

リソースは、データベース管理者が指定したリソース・プランに従ってユーザーに割り当てられます。リソース・プランの指定には、次の用語が使用されます。

サービスを使用して接続するユーザーは特定のリソース・コンシューマ・グループのメンバーであるため、データベース・リソース・マネージャによってリソース・コンシューマ・グループをサービスにマップできます。したがってリソース・コンシューマ・グループに対して使用可能なリソースを制限できます。

参照:

 

Oracle RACの高可用性フレームワークの概要

Oracle RACの高可用性フレームワークを使用すると、実行中の状態にあるデータベース、コンポーネントおよびアプリケーションを常にOracle RACで管理できます。インスタンス、コンポーネントまたはアプリケーションに障害が発生しても自動的に再起動できるため、Oracle Databaseの動作を最適な状態に保つことができます。

Oracle Databaseはサービスの可用性の維持に重点を置いています。Oracle RACでは、Oracleサービスは1つ以上のインスタンスでワークロードを共有し、継続的に使用できるように設計されています。Oracle RACの高可用性フレームワークでは、各サービスの構成情報をOracle Cluster Registry(OCR)に格納することでサービスの可用性が維持されます。Oracle Clusterwareは、サービス定義に基づいて複数のインスタンス間でサービスのリカバリおよび調整を行います。

参照:

 

ロード・バランシング・アドバイザの概要

ロード・バランシング・アドバイザは、Oracle RACデータベース・インスタンスが提供している現在のサービス・レベルについての情報をアプリケーションやクライアントに提供します。ロード・バランシング・アドバイザは、最適なパフォーマンスを得るためにデータベース・サービスのアプリケーション・リクエストをどのインスタンスに送信すべきかを、そのサービスに定義したワークロード管理ディレクティブに基づいてアプリケーションに推奨します。

ロード・バランシング・アドバイザによって示されるアドバイスでは、サーバーの処理能力およびサーバー上のサービスの現在のワークロードが考慮されます。ロード・バランシング・アドバイザを有効にすることにより、負荷が高いインスタンス、動作が遅いインスタンス、応答がないインスタンス、または障害が発生しているインスタンスで作業を行わないことによって、アプリケーションのスループットを向上させることができます。

ロード・バランシング・アドバイザを効果的に利用する方法は、ランタイム接続ロード・バランシング機能を持つ統合されたOracleクライアントを使用することです。高速アプリケーション通知(FAN)と統合されているため、Oracle Integrated Clientsでは、Oracle RACクラスタの現在のステータスを認識します。これにより、クライアント接続が、使用できなくなったインスタンスへの接続を試みたり、それを待機することを防ぎます。また、インスタンスが再起動すると、最近起動したインスタンスへの接続が接続プールによって作成され、このインスタンスが提供する追加のリソースが利用されるため、Oracle RACではFANを使用してアプリケーションの接続プールを通知します。

使用されている各サービスにサービス・レベル目標を定義して、ロード・バランシング・アドバイザを使用するようにOracle RAC環境を構成できます。これによって、そのサービスのロード・バランシング・アドバイザが有効になり、FANロード・バランシング・イベントの発行が有効になります。ランタイム接続ロード・バランシングのサービス・レベル目標には、次の2つがあります。

「ロード・バランシング・アドバイザの有効化」オプションを選択していない場合は、サービス・レベルの目標値が「なし」に設定され、そのサービスに対するロード・バランシングが無効になります。

参照:

 

接続ロード・バランシングの概要

Oracle Netは、クライアントおよびOracleデータベース・サーバー上に存在するソフトウェア・コンポーネントです。このコンポーネントは、クライアント・アプリケーションとサーバー間の接続を確立して維持し、業界標準プロトコルを使用してクライアントとサーバー間でメッセージを交換します。クライアント・アプリケーションとデータベースが通信するには、クライアント・アプリケーションが接続先のデータベースの場所の詳細を指定し、データベースがIDまたはアドレスなどを示す必要があります。

データベース・サーバー上には、Oracle Netリスナーが存在し、これは通常リスナーと呼ばれます。リスナーは、クライアント接続リクエストをリスニングするプロセスです。リスナーの構成ファイルはlistener.oraです。

Net Configuration Assistant(NetCA)を使用して、データベース・サービスの単純な名前であるネット・サービス名を作成できます。ネット・サービス名は接続記述子に変換されます。これはデータベースのネットワーク・アドレスおよびデータベース・サービスの名前です。接続記述子のアドレスの一部は実際にリスナーのプロトコル・アドレスです。クライアントは接続記述子を使用して、クライアントが接続するデータベースまたはインスタンスを指定します。

ネット・サービス名を使用する場合、最初にネット・サービス名を接続記述子にマッピングしたときにデータベース・インスタンスへの接続が設定されます。このマッピング情報は、ネーミング・メソッドを使用してアクセスした情報の1つ以上のリポジトリに格納されます。最も使用されるネーミング・メソッドは、ローカル・ネーミングです。ここで、ネット・サービス名およびその接続記述子はtnsnames.oraと呼ばれる特定の構成ファイルに格納されています。

サービスを使用してクライアントがクラスタ・データベースに接続する際に、Oracle Netの接続ロード・バランシング機能を使用して、そのサービスをサポートするすべてのインスタンス間でユーザー接続を分散できます。実装可能なロード・バランシングには、クライアント側とサーバー側の2種類のロード・バランシングがあります。Oracle RACデータベースのクライアント接続では、両方の接続ロード・バランシングを使用する必要があります。Oracle Database Configuration Assistant(DBCA)を使用してOralce RACデータベースを作成した場合、デフォルトでは、サーバー側のロード・バランシングが構成されて有効化されます。

参照:

 

クライアント側のロード・バランシング

クライアント側のロード・バランシングでは、接続リクエストをリスナー間で均等に分散します。リスナーは、接続リクエストを受信すると、リクエストされたサービスを提供することをリスナーが認識するインスタンスにユーザーを接続します。

クライアント側のロード・バランシングは、tnsnames.oraファイルにパラメータLOAD_BALANCE=yesを設定して、クライアントの接続定義に定義します。このパラメータをyesに設定すると、Oracleクライアントはアドレス・リストから無作為にアドレスを選択し、そのノードのリスナーに接続します。その結果、クラスタ内の使用可能なリスナー間で、クライアント接続が均等に分散されます。

DBCAを使用してOracle RACデータベースを作成する場合、アシスタントでは、tnsnames.oraファイルにロード・バランシング接続定義のサンプルが作成されます。

クライアント側のロード・バランシングには接続フェイルオーバーも含まれます。接続フェイルオーバーを使用する場合、選択したアドレスからエラーが返されると、Oracle Net Servicesはアドレス・リスト内の次のアドレスを試します。これは、接続に成功するか、アドレス・リスト内のすべてのアドレスを試すまで続けられます。

サーバー側のロード・バランシング

サーバー側のロード・バランシングでは、ロード・バランシング・アドバイザからの情報を使用して、リスナーにより、現在サービスを提供している最適なインスタンスに接続リクエストが転送されます。

各サービスに対して、接続ロード・バランシングの目標を設定し、リスナーでのロード・バランシングの使用方法を定義できます。接続ロード・バランシングには、長期または短期のいずれかの目標を使用できます。これらの目標の特性は次のとおりです。

DBCAを使用して作成されたサービスでは、長期の接続ロード・バランシングの目標がデフォルトで使用されます。


注意:

データベースの作成にDBCAを使用しなかった場合、またはデフォルトの1521以外のリスナー・ポートを使用している場合は、クラスタ・データベースのLOCAL_LISTENERおよびREMOTE_LISTENERデータベース初期化パラメータを構成する必要があります。 


ランタイム接続ロード・バランシングの概要

ランタイム接続ロード・バランシングはOracle接続プールの機能の1つです。これを使用すると、ロード・バランシング・アドバイザの情報に基づいてクライアントの作業リクエストをOracle RACデータベースのインスタンス間で分散させることができます。接続の割当ては、ロード・バランシング・アドバイザのFANイベントによる通知に従い、データベース・インスタンスが提供する現在のパフォーマンス・レベルに基づいて行われます。これにより、初期データベース接続時のロード・バランシングではなく、トランザクション・レベルでのロード・バランシングが実現します。

ランタイム接続ロード・バランシングを使用すると、アプリケーションは、ロード・バランシング・アドバイザの情報を使用して、ユーザーにより適切なパフォーマンスを提供します。Oracle JDBCおよびOracle Data Provider for .NET(ODP.NET)クライアントの接続プールは、ロード・バランシング・アドバイザの情報を使用できるように統合されています。次の構成を持つサービスを使用して、ランタイム接続ロード・バランシングのクライアント・データソースを有効にする必要があります。

図7-1「ランタイム接続ロード・バランシング」は、ランタイム接続ロード・バランシングを説明したものです。この図では、Oracle RACデータベースに3つのインスタンスがあります。ここで、インスタンス1およびインスタンス3のパフォーマンスは最適であり、インスタンス2のパフォーマンスは現在は最適ではないとロード・バランシング・アドバイザで示されているとします。暗黙的な接続キャッシュでランタイム接続ロード・バランシングが有効になっている場合、次のプロセスが発生します。

  1. クライアントが接続キャッシュからの接続をリクエストします。

  2. ランタイム接続ロード・バランシングにより、最も効率的な(最適な)インスタンスに属する接続が接続キャッシュから選択されます。図7-1では、接続のルーティング先となるノードが3つ存在します。CPUワークロードが最も少ないインスタンス1には、現在、着信接続の約60パーセントが割り当てられています。現在過負荷の状態にあるインスタンス2には、着信接続の約10パーセントしか割り当てられていません。ワークロードの高いインスタンス3には、着信接続の約30パーセントが割り当てられています。この場合、接続リクエストの処理に最適なインスタンスはインスタンス1です。

  3. 作業リクエストを最短のレスポンス時間で処理する接続をクライアントが受信します。

    図7-1    ランタイム接続ロード・バランシング


    画像の説明

高速アプリケーション通知(FAN)の概要

高速アプリケーション通知は、Oracle RACで他のプロセスにクラスタ構成およびサービス・レベルの情報を通知するために使用される通知メカニズムであり、この情報としてはUPイベントやDOWNイベントなどのステータスの変更が含まれます。FANのUPイベントおよびDOWNイベントは、インスタンス、サービスおよびノードに適用できます。FANでは、ロード・バランシング・アドバイザのイベントもパブリッシュされます。

クラスタ構成の変更に対しては、Oracle RACの高可用性フレームワークにより、インスタンスの状態に関して変更が発生すると同時にFANイベントがパブリッシュされます。アプリケーションは、データベースの問合せと問題の検出を待たずに、FANイベントを受信して即時に対応できます。

FANのUPおよびDOWNイベントには、次のメリットがあります。

FANコールアウトの概要

FANコールアウトは、高可用性イベントの発生と同時にOracle RACによって実行されるサーバー側の実行可能ファイルです。クラスタ構成でのイベントの発生時に実行されるアクションを、FANコールアウトを使用して自動化する例を次に示します。

FANコールアウトの実行可能ファイルは、CRSホーム・ディレクトリのracg/usrcoサブディレクトリに格納されます。このサブディレクトリがCRSホームにない場合は、CRS_home/racg/tmpサブディレクトリと同じ権限および所有者でこのディレクトリを作成する必要があります。

Oracle Clusterwareを実行するすべてのノードに、FANコールアウトで使用される実行可能ファイルのコピーを用意しておく必要があります。サンプルのコールアウト・スクリプトは、Oracle Technology Networkの「Oracle Real Application Clusters Sample Code」セクション(http://www.oracle.com/technology/sample_code/products/rac/)で入手できます。

参照:

 

サービスの作成

Oracle Enterprise Manager Database Controlを使用してサービスを作成できます。

サービスを作成するには、次の手順を実行します。
  1. 「クラスタ・データベース: ホーム」ページで「可用性」をクリックします。

    「可用性」ページが表示されます。


    画像の説明

  2. 「サービス」セクションで「クラスタ管理データベース・サービス」をクリックします。Oracle RACデータベースおよびホストのオペレーティング・システムに対する資格証明を入力または確認します。

    「クラスタ管理データベース・サービス」ページが表示されます。


    画像の説明

  3. 「サービスの作成」をクリックします。

    「サービスの作成」ページが表示されます。

  4. 「サービス名」フィールドに、サービスの名前(DEVUSERSなど)を入力します。

  5. サービスを作成した後でそれを開始には、「作成後にサービスを開始」を選択します。


    画像の説明

  6. インスタンスが、このサービスの「高可用性構成」セクションに表示されている各インスタンスに対して「優先」または「使用可能」インスタンスかどうかを選択します。サービスを特定のインスタンス上で実行しない場合は、「サービス・ポリシー」で「未使用」を選択します。

  7. 接続数の合計ではなく、経過時間に基づいて接続ワークロードを分散する場合、「接続ロード・バランシングの目標」で「短い」を選択します。それ以外の場合は、「長い」を選択します。

  8. 次のスクリーンショットに示すように、「サービスの作成」ページの「通知プロパティ」ヘッダーの下の「ロード・バランシング・アドバイザの有効化」を選択し、このサービスのロード・バランシング・アドバイザを有効化します。「サービス時間」または「スループット」のいずれかのサービス・レベルの目標を選択します。


    画像の説明

  9. このサービスをOracle Call Interface(OCI)またはODP.NETアプリケーションで使用してFANを有効化する場合、「通知プロパティ」ヘッダーの下の「高速アプリケーション通知の有効化」を選択します。

  10. 「サービスしきい値レベル」セクションで、「経過時間」および「CPU時間」メトリックの「警告」および「クリティカル」しきい値(ミリ秒)を入力することにより、サービス・レベルしきい値をオプションで設定できます。

  11. このサービスで使用されるリソースを制御するリソース・プランを使用する場合、「リソース管理プロパティ」セクションの「コンシューマ・グループ・マッピング」リストからコンシューマ・グループの名前を選択します。たとえば、LOW_GROUPというコンシューマ・グループを選択すると、開発ユーザーに与えるデータベース・リソースへの優先度を低くすることができます。


    注意:

    「サービスの編集」ページでは、サービスに対するコンシューマ・グループ名を変更できません。これは、特定のサービスに関連付けられたコンシューマ・グループが複数存在する場合があるためです。ただし、「サービスの編集」ページには、「リソース・コンシューマ・グループ・マッピング」ページへのリンクが含まれており、ここでサービスに対するコンシューマ・グループ・マッピングを変更できます。 


  12. このサービスが特定のOracle Schedulerジョブ・クラスで使用される場合、「リソース管理プロパティ」の「ジョブ・スケジューラ・マッピング」リストから名前を選択してマッピングを指定できます。

  13. 「OK」をクリックして、サービスを作成します。

    参照:

     

サービスをサポートするためのOracle Netの構成

Oracle Enterprise Managerでは、新しく作成されたサービス用にOracle Clusterwareリソースが構成されますが、tnsnames.oraファイルに、対応するエントリは生成されません。

新規作成されたサービスをサポートするようOracle Net Servicesを構成するには、次の手順を実行します。
  1. 次のコマンドを使用して、ローカル・ノード上のリスナーによって新しいサービスが認識されるかどうかを確認します。

    lsnrctl status
    
    

    次のような新しいサービスのリストが表示されます。

    Service "DEVUSERS.oracle.com" has 1 instance(s).
      Instance "sales1", status READY, has 2 handler(s) for this service...
    
    

    新しく作成されたサービスの表示名(DEVUSERS.oracle.comなど)は、tnsnames.oraファイルのSERVICE_NAMEパラメータに使用する値です。

  2. テキスト・エディタを使用して、データベースに接続するサービスを使用する各クライアント、およびサービスの優先インスタンスまたは使用可能インスタンスとしてリストされるインスタンスを含む、各ノード上のOracle_home/network/adminディレクトリのtnsnames.oraファイルを変更します。次のようなエントリを追加して各ノードのVIPアドレスを指定します。

    DEVUSERS = 
      (DESCRIPTION = 
        (ADDRESS_LIST = Service
          (ADDRESS = (PROTOCOL = TCP)(HOST = docrac1-vip)(PORT = 1521))
          (ADDRESS = (PROTOCOL = TCP)(HOST = docrac2-vip)(PORT = 1521))
        (LOAD_BALANCE = yes)
        )
      (CONNECT_DATA = (SERVICE_NAME = DEVUSERS.oracle.com))
       )
    
    

    前述の例では、パラメータADDRESS_LISTには、サービスの優先インスタンスまたは使用可能インスタンスのいずれかとして構成されたインスタンスを含む各ノードの1つのADDRESSが含まれています。

  3. SQL*Plusとサービス名を使用してOracle RACデータベースへの接続を試行し、Oracle Net Services構成をテストします。次に例を示します。

    $ sqlplus system@DEVUSERS
    Enter password: password
    
    

    パスワードを入力すると、Oracle RACデータベースに正常に接続したことを示すメッセージが表示されます。エラー・メッセージが表示された場合は、tnsnames.oraファイルを調査して、ユーザー名、パスワードおよびサービス名が正しく入力されたか、Oracle RAC環境のすべての情報が正しいかを検証します。

  4. 新規作成されたサービスの優先または使用可能として指定されたインスタンスを含むクラスタ内の他のノード上で、これらの手順を繰り返します。

サービスの管理

Oracle Enterprise Managerでサービスを作成および管理できます。大部分のサービス管理タスクには、PL/SQLパッケージDBMS_SERVICEおよびSRVCTLユーティリティも使用できます。

次の項では、クラスタ・データベース用のサービスの管理方法について説明します。

Oracle Enterprise Managerを使用したサービス管理の概要

「クラスタ管理データベース・サービス」ページは、サービス関連のすべてのタスクを開始するマスター・ページです。このページにアクセスするには、「クラスタ・データベース: メンテナンス」ページに移動し、「サービス」セクションの「クラスタ管理データベース・サービス」をクリックします。このページとページ内のリンクを使用して、次の操作を実行できます。

「クラスタ管理データベース・サービス」ページの使用

Oracle Enterprise Managerを使用してサービスを管理する際に、「クラスタ管理データベース・サービス」ページを使用します。

「クラスタ管理データベース・サービス」ページで、次のタスクを実行できます。

「クラスタ管理データベース・サービス」ページにアクセスするには、次の手順を実行します。
  1. 「クラスタ・データベース: ホーム」ページで、「可用性」タブをクリックします。

  2. 可用性サブページの「サービス」ヘッダーの下で、「クラスタ管理データベース・サービス」をクリックします。

    「クラスタ管理データベース・サービス: クラスタおよびデータベースのログイン」ページが表示されます。

  3. データベースの資格証明と、Oracle RACデータベースをホストするクラスタの資格証明を入力して、「続行」をクリックします。

    「クラスタ管理データベース・サービス」ページが表示され、そのクラスタ・データベース・インスタンス上で使用可能なサービスが表示されます。

    参照:

     

「クラスタ管理データベース・サービス: 詳細」ページの使用

任意のサービス用の「クラスタ管理データベース・サービス: 詳細」ページでは、次のタスクを実行できます。

「クラスタ管理データベース・サービス: 詳細」ページにアクセスするには、次の手順を実行します。
  1. 「クラスタ・データベース: ホーム」ページで、「可用性」タブをクリックします。

  2. 可用性サブページの「サービス」ヘッダーの下で、「クラスタ管理データベース・サービス」をクリックします。

    「クラスタ管理データベース・サービス: クラスタおよびデータベースのログイン」ページが表示されます。

  3. データベースの資格証明と、Oracle RACデータベースをホストするクラスタの資格証明を入力して、「続行」をクリックします。

    「クラスタ管理データベース・サービス」ページが表示され、そのクラスタ・データベース・インスタンス上で使用可能なサービスが表示されます。

  4. 詳細を表示するサービスの名前をクリックします。

    そのサービスの「クラスタ管理データベース・サービス: 詳細」ページが表示されます。次のスクリーンショットに、DEVUSERSサービスの詳細ページが表示されます。


    画像の説明

    参照:

     

サービス・レベルのしきい値の構成

サービスの作成時には、サービスのパフォーマンスを測定するためのしきい値を指定できます。サービスが指定したしきい値を超えると、自動ワークロード・リポジトリ(AWR)からアラートが生成され、Oracle Enterprise Managerによって表示されます。

パフォーマンス関連の統計、待機イベントおよびアクティブ・セッションは、サービス・レベルで監視されます。また、AWRでは、サービスを使用してパフォーマンスを監視できます。AWRによって、SQL実行時間、待機クラス、サービスによって消費されたリソースなどのサービス・パフォーマンスが記録されます。

サービスを作成する際、「経過時間のしきい値」または「CPU時間のしきい値」の値を指定できます。これらのメトリックに対して「警告およびクリティカル」のしきい値を指定できます。

サービス・レベルのしきい値を変更するには、次の手順を実行します。
  1. 「クラスタ・データベース: ホーム」ページで、「インスタンス」セクションまで下にスクロールします。

  2. これらのメトリックのしきい値を変更するインスタンスの名前をクリックします。

    「クラスタ・データベース・インスタンス: ホーム」ページが表示されます。

  3. ページ下部の「関連リンク」セクションで「メトリックとポリシー設定」をクリックします。

    「メトリックとポリシー設定」ページが表示されます。

  4. 「表示」を「すべてのメトリック」に設定し、「サービス・レスポンス時間」または「サービスCPU時間」のしきい値のいずれかを検索します。そのしきい値の「編集」アイコンをクリックします。

    「詳細設定の編集」ページが表示されます。

  5. 「警告のしきい値」または「クリティカルのしきい値」フィールドにしきい値(ミリ秒)を入力し、「続行」をクリックします。

    「メトリックとポリシー設定」ページが表示されます。

  6. 別のメトリックのしきい値を編集するか、または完了したら、「OK」をクリックします。

    参照:

     

クライアント・フェイルオーバーの構成

フェイルオーバーを自動化する場合、考慮する主要な要素が2つあります。1つは、新規の本番データベースへの接続が試行される前のTCP/IPネットワーク・タイムアウトを避けるために、障害発生時に接続されているクライアントに障害が発生したことを迅速かつ自動で通知する必要があることです(タイムアウトの範囲は8分から2時間の間で、オペレーティング・システムによって異なります)。Oracle RAC構成では、高速アプリケーション通知(FAN)を使用してJDBCクライアント、OCIクライアントおよびODP.NETクライアントに通知します。FANイベント通知およびコールアウトによって、プライマリ・サイトでの障害発生時にクライアントが自動かつ迅速にリダイレクトできます。

2つ目のクライアント・フェイルオーバーの主要な要素は、フェイルオーバー発生後の新規インスタンスへのクライアントのリダイレクトで、これはサービスを使用して実装できます。Oracle RACデータベースでのサービス作成時にサービスを割り当てたインスタンスが使用できなくなった場合、Oracle RACでは、データベースで使用可能なインスタンスにサービスを再配置します。接続リクエストが入るときにどのインスタンスが現在サービスを提供しているかを、リスナー登録を使用してクラスタ内のすべてのリスナーが認識できるようにするために、ユーザーはインスタンスから独立したサービスにアクセスできます。

この項では、アプリケーション・クライアントのFANを構成します。この項には次のトピックが含まれます。

JDBCクライアント・フェイルオーバーの構成

アプリケーションでJDBC開発環境をThickおよびThin JDBCクライアントに使用できます。JDBCの暗黙的な接続キャッシュを使用して、高速接続フェイルオーバーおよびランタイム接続ロード・バランシングのFAN機能を有効にする必要があります。この項ではJDBC(Java Database Connectivity)クライアント・フェイルオーバーの構成方法を説明します。

JDBCクライアントのクライアント・フェイルオーバーを構成するには、次の手順を実行します。
  1. Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlのクラスタ管理サービスに関するページを使用して新規サービスを作成します。サービスの作成の詳細は、「サービスの作成」を参照してください。

  2. DataSourceプロパティFastConnectionFailoverEnabledTRUEに設定して、JDBCクライアントの高速接続フェイルオーバーを有効化します。次に例を示します。

    OracleDataSource ods;
    ods = new OracleDataSource();
    ...
    ods.setConnectionCachingEnabled(True);
    ods.setFastConnectionFailoverEnabled(True);
    ods.setConnectionCacheName("MyCache");
    ods.setConnectionCacheProperties(cp);
    
    
  3. oracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STRプロパティをデータ・ソース上でゼロ以外の値に設定します(暗黙的な接続キャッシュ上では設定しません)。JDBCクライアントがこのプロパティの設定時に、使用できないホストに接続しようとした場合、接続試行はoracle.net.ns.SQLnetDef.TCP_CONNTIMEOUT_STRに対して指定した時間にバインドされます。指定した時間が過ぎても接続に成功しない場合、クライアントはアドレス・リストにある次のホストに接続しようとします。ほとんどのインストールに対して十分なプロパティの設定値は3秒です。

  4. クラスタ内の各ノードのVIPアドレスのリストを含み、既存のサービスに接続されている接続記述子を使用するようにJDBCクライアントを構成します。2ノードのOracle Real Application Clusters(RAC)クラスタの例を次に示します。

    Sales_JDBC =
      (DESCRIPTION =
        (ADDRESS=(PROTOCOL=TCP)(HOST=docrac1_vip)(PORT=1521))
        (ADDRESS=(PROTOCOL=TCP)(HOST=docrac2_vip)(PORT=1521))
        (LOAD_BALANCE = yes)
        (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = Sales_JDBC)
        )
      )
    
    


    注意:

    TAF処理はFAN ONS処理を妨害するため、透過アプリケーション・フェイルオーバー(TAF)をJDBC Thickクライアントの高速接続フェイルオーバーで構成しないでください。 


    JDBC ThinドライバではOracle Netを使用しないため、JDBC Thinドライバを使用する場合は、URLに完全な接続記述子を含む必要があります。

  5. JDBCクライアントでリモートOracle Notification Services(ONS)サブスクリプションを構成し、クライアントでONSデーモンが必要とされないようにします。次に例を示します。

    ods.setONSConfiguration("docrac1_vip:6200,docrac2_vip:6200");
    
    

    リモートONSサブスクリプションでは、クライアント・アプリケーションでフェイルオーバーに使用できるすべてのホストが指定されている必要があります。さらにすべてのONS通信にセキュア・ソケット・レイヤー(SSL)を使用します。次に例を示します。

    ods.setONSConfiguration("nodes=docrac1_vip:6200,
    docrac2_vip:6200 walletfile=/mydir/conf/Wallet");
    

    参照:

     

OCIクライアント・フェイルオーバーの構成

この項では、FANイベントを使用したフェイルオーバーのOracle Call Interface(OCI)クライアントを構成する方法について説明します。

OCIクライアント・フェイルオーバーを構成するには、次のようにします。
  1. Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlのクラスタ管理サービスに関するページを使用してOCIクライアントのサービスを作成します。サービスの作成の詳細は、「サービスの作成」を参照してください。

    サービスを優先したプライマリ・インスタンスを構成する必要があります。「サービス・プロパティ」で「透過アプリケーション・フェイルオーバー・ポリシー」を「基本」に設定します。「通知プロパティ」では、「OCIおよびODP.NETアプリケーションでの高速アプリケーション通知の有効化」を選択します。

    Oracle Enterprise Managerを使用したサービスの変更の詳細は「サービスの管理」を参照してください。

  2. OCI_EVENTSパラメータで環境を初期化して、OCIクライアントのFANを有効化します。次に例を示します。

    OCIEnvCreate(...OCI_EVENTS...)
    
    
  3. OCIクライアント・アプリケーションをスレッド・ライブラリlibthreadまたはlibpthreadにリンクします。

  4. 高速アプリケーション通知が有効になった後、クライアントおよびアプリケーションによって高可用性イベントが発生するときは常に起動するようコールバックを登録できます。次に例を示します。

    OCIAttrSet(envhp, (ub4) OCI_HTYPE_ENV, (dvoid *)evtcallback_fn, 
      (ub4) 0, (ub4)OCI_ATTR_EVTCBK, errhp); 
    OCIAttrSet(envhp, (ub4) OCI_HTYPE_ENV, (dvoid *)evtctx, (ub4) 0, 
      (ub4)OCI_ATTR_EVTCTX, errhp);
    
    

    イベントのコールバックとコンテキストを登録した後、OCIは高可用性イベントが発生するたびに登録された関数を1回コールします。

    参照:

     

ODP.NETクライアント・フェイルオーバーの構成

Oracleインスタンスに予期せず接続される場合、透過アプリケーション・フェイルオーバー(TAF)によって、他のOracleインスタンスへフェイルオーバーがシームレスに試行されます。フェイルオーバーに時間がかかることがあるため、TAFコールバックによってアプリケーションにその遅延を通知する必要がある場合があります。ODP.NETではOracleConnectionオブジェクトのFailoverイベントによってTAFコールバックをサポートします。TAFコールバックを受信するには、イベント・ハンドラ機能をOracleConnection オブジェクトのFailoverイベントで登録する必要があります。また、接続パラメータenlistはTAFを機能させるためにfalseに設定する必要があります。

ODP.NETを有効化する手順は、FCFの有効化に接続文字列内でのパラメータの設定が必要という点で、JDBCを有効化する手順と似ています。この項では、FANイベントを使用してフェイルオーバーのOracle Data Provider for .NET(ODP.NET)クライアントを構成する方法を説明します。

ODP.Netクライアント・フェイルオーバーを構成するには、次の手順を実行します。
  1. Oracle Enterprise Manager Database ControlまたはOracle Enterprise Manager Grid Controlのクラスタ管理サービスに関するページを使用してODP.NETクライアントのサービスを作成します。サービスの作成の詳細は、「サービスの作成」を参照してください。

    サービスを優先したプライマリ・インスタンスを構成する必要があります。「サービス・プロパティ」で「透過アプリケーション・フェイルオーバー・ポリシー」を「基本」に設定します。「通知プロパティ」では、「OCIおよびODP.NETアプリケーションでの高速アプリケーション通知の有効化」を選択します。「接続ロード・バランシングの目標」を「長い」に設定します。

  2. ODP.NET接続プールのFCFをFANの高可用性イベントにサブスクライブして有効化します。有効化するにはha events接続文字列属性を接続時にtrueに設定します。これは、接続プールを使用している場合にのみ機能します。つまり、pooling属性をtrueに設定する必要があります。次に例を示します。この例で、usernameは接続先のデータベース・ユーザーの名前を、passwordはそのユーザーのデータベース・パスワードを示します。

    // C#
    using System;
    using Oracle.DataAccess.Client;
    class HAEventEnablingSample
    {
      static void Main()
      {
        OracleConnection con = new OracleConnection();
    
        // Open a connection using ConnectionString attributes
        // Also, enable "load balancing"
        con.ConnectionString =
          "User Id=username;Password=password;Data Source=oracle;" +
          "Min Pool Size=10;Connection Lifetime=120;Connection Timeout=60;" +
          "HA Events=true;Incr Pool Size=5;Decr Pool Size=2";
    
        con.Open();
    
        // Create more connections and carry out work against the DB here.
    
        // Dispose OracleConnection object
        con.Dispose();
        }
     }
    
    

    参照:

     

透過的アプリケーション・フェイルオーバー: Oracle By Example Series

Oracle Net Servicesによってインスタンスへの接続が確立されると、クライアントが接続をクローズするか、インスタンスが停止するか、または障害が発生するまで、接続はオープン状態のまま維持されます。接続に透過的アプリケーション・フェイルオーバー(TAF)を構成すると、インスタンスで障害が発生した場合、Oracle RACでは、障害が発生していないインスタンスにセッションが移動されます。

TAFでは、フェイルオーバーが完了すると問合せは再開できますが、INSERTUPDATEDELETEなどの他のトランザクションの場合、アプリケーションで、失敗したトランザクションをロールバックして再度送信する必要があります。フェイルオーバーが発生したら、セッションのカスタマイズ(つまりALTER SESSION文)を再実行する必要があります。

Oracle By Example(OBE)には、Oracle Database 11g リリース1の高可用性機能に関する一連のチュートリアルが含まれています。このOBEには、Oracle Enterprise ManagerおよびPL/SQLを使用した、Oracle RAC環境でのTAFの設定方法が示されています。

透過的アプリケーション・フェイルオーバーに関するOBEのチュートリアルを表示するには、次のURLに移動します。

http://www.oracle.com/technology/obe/10gr2_db_vmware/ha/rac/rac.htm

戻る 次へ
Oracle
Copyright © 2006, 2008 Oracle Corporation.

All Rights Reserved.
目次
目次
索引
索引