データベースに新しいサービスを作成した場合は、サービスごとに自動ワークロード管理の特性を定義する必要があります。サービスの特性には、次のものが含まれます。
関連項目:
詳細は、「SRVCTLを使用したサービスの作成」を参照してください
SRVCTLを使用してサービスを作成または変更する方法や、様々なオプションの詳細は、「SRVCTLのコマンド・リファレンス」を参照してください
データベース・オブジェクトのエディションベースの再定義を使用すると、アプリケーションのオブジェクトが使用中であってもそれらのオブジェクトをアップグレードできます。データベース・サービスの作成時にそのエディション属性を設定したり、既存のサービスを変更してエディションを設定できます。サービス・エディションを設定すると、そのサービスを使用する接続は、このエディションを初期セッション・エディションとして使用します。サービスでエディション名が指定されていない場合、初期セッション・エディションはデータベースのデフォルト・エディションです。
次のように、SRVCTLを使用してサービス・エディションを設定できます。
$ srvctl modify service –db hr –s crmsrv –edition e2
Oracle Clusterwareを使用してデータベースを管理する場合、-policy
パラメータを指定してsrvctl add service
コマンドを使用してサービスを追加するときに、個々のデータベース・サービス用に起動オプションを構成できます。サービスの管理ポリシーをAUTOMATIC
(デフォルト)に設定した場合は、SRVCTLを使用してデータベースを起動するとサービスが自動的に起動されます。管理ポリシーをMANUAL
に設定した場合、サービスは自動起動されず、SRVCTLを使用して手動で起動する必要があります。MANUAL
に設定しても、Oracle Clusterwareは、実行中のサービスを監視し、障害が発生すると再起動されます。Oracle RAC 11gリリース2(11.2)より前は、すべてのサービスが、MANUAL
管理ポリシーで定義されているかのように動作していました。
関連項目:
使用方法については、「srvctl add service」
を参照してください
CRSCTLを使用したOracle Clusterwareの停止および再起動は障害として扱われ、サービスが実行中の場合は再起動されます。
注意:
管理者管理データベースでautomaticサービスを使用する場合、計画されたデータベースの起動中に、優先インスタンスではなく最初のインスタンスでサービスが起動することがあります。
ご使用の環境でOracle Data Guardを構成してある場合は、SRVCTLに-l
パラメータを使用して、各サービスにロールを定義できます。サービスにロールを指定すると、Oracle Clusterwareは、データベース・ロールがそのサービスに指定したロールに一致した場合にのみ自動的にサービスを起動します。有効なロールは、PRIMARY
、PHYSICAL_STANDBY
、LOGICAL_STANDBY
およびSNAPSHOT_STANDBY
で、1つのサービスに複数のロールを指定できます。
注意:
サービス・ロールのみがサービスの自動開始を制御します。手動で開始するSRVCTLを使用することで、ロールが一致しない場合でもサービスは正常に実行されます。
クラスタ内の複数のデータベースが同じサービス名を提供すると、Oracle RACは、該当するすべてのデータベースにわたってそのサービスへの接続を均等に分散します。これはOracle Data Guardのスタンバイ・データベースおよびアクティブ・データベースに役に立ちますが、サービスへのクライアント接続を特定のデータベースに割り当てる必要がある場合、サービス名はクラスタ内で一意である(他のデータベースによって提供されない)必要があります。
関連項目:
データベース・ロールの詳細は、『Oracle Data Guard概要および管理』を参照してください。
管理者管理データベースに対してサービスを定義する場合は、SRVCTLに-preferred
パラメータを使用して、そのサービスを通常サポートするインスタンスを定義します。このようなインスタンスを、優先インスタンスといいます。サービスの優先インスタンスが失敗した場合に備えて、-available
パラメータを指定してSRVCTLを使用し、サービスをサポートするその他のインスタンスを定義することもできます。このようなインスタンスを、使用可能インスタンスといいます。
優先インスタンスを指定する場合は、サービスが通常実行されるインスタンスの数を指定します。これは、サービスの最大カーディナリティです。Oracle Clusterwareは、サービスを構成したインスタンス数で常にサービスが実行されることを確認しようとします。その後は、インスタンス障害またはサービスの計画的な再配置のために、使用可能インスタンスでサービスが実行される場合があります。
インスタンスが失敗した場合、リストに複数のインスタンスがあると、Oracle Clusterwareによってサービスがどの使用可能インスタンスに再配置されるかは制御できません。ただし、計画済操作時は、サービスを現在提供していない、優先リストまたは使用可能リスト内のインスタンスにサービスを手動で転送できます。
Oracle Databaseでは、使用可能インスタンスに移動されたサービスは、優先インスタンスを再起動しても、優先インスタンスには戻りません。これには、次の理由があります。
サービスが、指定した数のインスタンスで実行されている。
現在のインスタンスでサービスを維持することによって、より高度なサービス可用性が提供される。
サービスを最初の優先インスタンスに戻さないことで、2回目の機能停止が回避される。
ただし、FANコールアウトを使用して、優先インスタンスへのフェイルバックを簡単に自動化することもできます。
関連項目:
ポリシー管理データベースおよび管理者管理データベースの詳細は、「Oracle RACの管理ツール」を参照してください
ポリシー管理データベースのサービスを定義する場合、-serverpool
パラメータを指定したSRVCTLを使用して、データベースがホストされているサーバー・プールにサービスを割り当てます。サービスは、-cardinality
パラメータを使用して、UNIFORM
(サーバー・プール内のすべてのインスタンスで実行)またはSINGLETON
(サーバー・プール内の単一インスタンスでのみ実行)のいずれかとして定義できます。singletonサービスの場合、Oracle RACはそのサービスがアクティブなサーバー・プール内でインスタンスを選択します。そのインスタンスで障害が発生すると、サービスはサーバー・プール内の別のインスタンスにフェイルオーバーします。サービスは1つのサーバー・プールでのみ実行でき、すべてのサーバー・プールに少なくとも1つのサービスを含めることをお薦めします。
注意:
Oracle Database Quality of Service Management (Oracle Database QoS Management)では、サーバー・プールの最大サイズが1である場合、そのサーバー・プールのsingletonサービスを管理します。
関連項目:
ポリシー管理データベースおよび管理者管理データベースの詳細は、「Oracle RACの管理ツール」を参照してください
ランタイム接続ロード・バランシングを使用すると、アプリケーションは、ロード・バランシング・アドバイザ・イベントを使用して、ユーザーにより適切なサービスを提供できます。Oracle JDBC、Oracle Universal Connection Pool for Java、OCIセッション・プール、ODP.NETおよびOracle WebLogic Server Active GridLink for Oracle RACクライアントは、ロード・バランシング・アドバイザリ・イベントを利用するために自動的に統合されます。ロード・バランシング・アドバイザは、サービスに対してインスタンスで提供されている現在のサービス・レベルをクライアントに通知します。ロード・バランシング・アドバイザを有効にするには、サービスを作成または変更するときに、SRVCTLに-rlbgoal
パラメータを使用します。
また、そのインスタンスに送るワークロードの推奨量を提示します。最適なサービス品質(単一のトランザクションが完了した効率)または最適なスループット(完了ジョブまたは長時間の問合せが完了した効率)のどちらに基づいてサービスに接続するかは、目標によって決定されます。
Oracle Net Servicesでは、接続ロード・バランシングにより、サービスをサポートしているすべてのインスタンスにユーザー接続を分散できます。各サービスに対して、-clbgoal
パラメータを指定したSRVCTLを使用して、接続時ロード・バランシングの目標を設定し、リスナーにロード・バランシングを使用させる方法を定義できます。接続は、リスナーにセッション数を使用するように指定するLONG
(接続プールやSQL*FORMSなど)、またはリスナーに応答時間やスループットの統計を使用するように指定するSHORT
に分類されます。ロード・バランシング・アドバイザが有効な場合、この情報を使用して接続が均等に分散されますが、そうでない場合は、CPU使用率を使用して接続が均等に分散されます。
Oracle XAアプリケーションには固有の要件があります。グローバル・トランザクションでOracle RACを使用しやすくするには、サービスに対して、分散トランザクション処理オプション(-dtp
)をTRUE
に設定してSRVCTLを使用し、分散トランザクション処理のすべての密結合ブランチが同一インスタンス上で実行されるようにします。これは、同じOracle XAブランチを一時停止および再開する場合のみの要件ですが、個別の複数のブランチが同じインスタンスを使用する場合はパフォーマンスが向上する可能性があります。
関連項目:
Oracle RACでの分散トランザクション処理の詳細は、「Oracle RACの分散トランザクション処理」を参照してください