DBMS_SERVICE
パッケージを使用して、シングル・インスタンスのサービスを作成、削除、アクティブ化および非アクティブ化できます。
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
例外
関連項目: Real Application Clustersの管理サービスについては、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
この項では、DBMS_SERVICE
パッケージの使用に関連する項目について説明します。
DBMS_SERVICE
は、ワークロードの測定、管理、優先順位付け、およびXAトランザクションまたは分散トランザクション(あるいはこの両方)の管理を目的としたRDBMSでのサービスの管理をサポートします。
Oracle Real Application Clusters(RAC)には、インスタンス間でサービス名を管理する機能があります。このパッケージを使用すると、RACおよびシングル・インスタンスの両方でサービスを作成、削除、開始および停止できます。また、RACによってインスタンスからサービス名が削除された場合、そのサービス名を含むインスタンスに接続しているすべてのセッションを切断する機能を備えています。
関連項目: Oracle Real Application Clustersの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
権限
このパッケージを使用するクライアントは、ALTER
SYSTEM
実行権限、およびV$SESSION
表読込み権限を持っている必要があります。
スキーマ
このパッケージは、SYS
スキーマの下に作成する必要があります。
ロール
このパッケージのEXECUTE
権限は、DBA
ロールにのみ付与されます。
DBMS_SERVICE
パッケージでは、次の表に示す定数が使用されます。
引数のコール時に使用される定数は、表116-1「引数のコール時に使用される定数」を参照してください。
接続バランシング目標引数で使用される定数は、表116-2「接続バランシング目標引数で使用される定数」を参照してください。
TAFフェイルオーバー属性引数で使用される定数は、表116-3「TAFフェイルオーバー属性引数で使用される定数」を参照してください。
表116-1 引数のコール時に使用される定数
名前 | 型 | 値 | 説明 |
---|---|---|---|
|
|
|
ロード・バランシング・アドバイザを無効にします。 |
|
|
|
ロード・バランシング・アドバイザは、サービスでの処理の実行に要する時間およびサービスで使用可能な帯域幅に基づきます。 |
|
|
|
ロード・バランシング・アドバイザは、サービスで処理が実行される速度およびサービスで使用可能な帯域幅に基づきます。 |
表116-2 接続バランシング目標引数で使用される定数
名前 | 型 | 値 | 説明 |
---|---|---|---|
|
|
|
接続ロード・バランシングでは、ロード・バランシング・アドバイザ( |
|
|
|
サービスごとのセッション数を使用してインスタンスごとの接続数を平均化します。フォームなどの接続時間が長いアプリケーションには、この設定をお薦めします。この設定は、(接続を追加または削除せずに)接続プール自体の負荷に対応するためにそのサイズを調整する場合、ロード・バランシング・アドバイザで使用できます。これは、最も効果的な設定です。 |
表116-3 TAFフェイルオーバー属性引数で使用される定数
名前 | 型 | 値 | 説明 |
---|---|---|---|
|
|
|
このサービスでは、サーバー側のTAFが有効になっていません。 |
|
|
|
サーバー側のTAFメソッドは |
|
|
サーバー側のTAFタイプは |
|
|
|
サーバー側のTAFフェイルオーバー・タイプは |
|
|
|
サーバー側のTAFフェイルオーバー・タイプは |
|
|
|
フェイルオーバー時の再試行回数。TAFが再接続と再認証の組合せを試行する回数を指定します。この値は1以上の整数にする必要があります。最大値は |
|
|
|
フェイルオーバーが試行されるまでに遅延する秒数。再接続および再認証が失敗した場合に、TAFで発生する遅延(秒)を指定します。この値は1以上の整数にする必要があります。最大値は |
使用上の注意
TAFコールバックが登録されている場合は、フェイルオーバーが再試行され、フェイルオーバーの遅延は無視されます。 エラーが発生した場合、コールバックによってOCI_FO_RETRY
の値が戻されるかぎり、TAFは接続および認証の再試行を継続します。遅延は、コールバックのロジックにコーディングする必要があります。
クライアント側のTAF設定がTNS接続記述子に設定されている場合、クライアント側のTAF設定はサーバー側のTAF設定によって上書きされます。TAFがクライアント側に設定されていない場合は、少なくとも、TAFが有効になるようにフェイルオーバー・タイプを設定する必要があります。フェイルオーバー・タイプがサーバー側に設定されている場合、フェイルオーバー・メソッドはBASIC
にデフォルト設定されます。遅延および再試行はオプションです。個別に指定できます。
次の表に、DBMS_SERVICE
パッケージで発生する例外を示します。
表116-4 DBMS_SERVICEの例外
例外 | エラー・コード | 説明 |
---|---|---|
|
44301 |
サービス名引数が |
|
44302 |
ネットワーク名引数が |
|
44303 |
このサービス名はすでに存在します。 |
|
44304 |
指定したサービスは存在しません。 |
|
44305 |
指定したサービスは実行中です。 |
|
44306 |
サービス名が長すぎます。 |
|
44307 |
ネットワーク名(ドメインを除く)が長すぎます。 |
|
44308 |
サービス・レイヤーが初期化されていません。 |
|
44309 |
不明な障害が発生しています。 |
|
44310 |
サービスが最大数に達しています。 |
|
44311 |
指定したサービスは実行されていません。 |
|
44312 |
データベースはクローズされています。 |
|
44313 |
インスタンス名引数が無効です。 |
|
44314 |
このネットワーク名はすでに存在します。 |
|
44315 |
すべての属性が |
|
44316 |
無効な引数が指定されています。 |
|
44317 |
データベースは読取り専用でオープンしています。 |
|
44318 |
実行中のすべてのサービス・ネットワーク名の合計長が、最大許容長を超えました。 |
表116-5 DBMS_SERVICEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
サービスを作成します。 |
|
サービスを削除します。 |
|
サービスを切断します。 |
|
サービスを変更します。 |
|
サービスをアクティブにします。 |
|
サービスを停止します。 |
このプロシージャは、データ・ディクショナリにサービス名を作成します。 service_name
パラメータまたはALTER
SYSTEM
SET
SERVICE_NAMES
コマンドによってサービスを設定すると、サービスはデータ・ディクショナリにも暗黙的に作成されます。
構文
DBMS_SERVICE.CREATE_SERVICE( service_name IN VARCHAR2, network_name IN VARCHAR2, goal IN NUMBER DEFAULT NULL, dtp IN BOOLEAN DEFAULT NULL, aq_ha_notifications IN BOOLEAN DEFAULT NULL, failover_method IN VARCHAR2 DEFAULT NULL, failover_type IN VARCHAR2 DEFAULT NULL, failover_retries IN NUMBER DEFAULT NULL, failover_delay IN NUMBER DEFAULT NULL, clb_goal IN NUMBER DEFAULT NULL);
パラメータ
表116-6 CREATE_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前(64文字まで使用可能)。 |
|
クライアント接続用にSQLNet接続記述子で使用されるサービスのネットワーク名。 これは、NET |
|
サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。
|
|
サービスをDTP用またはXAトランザクションを含む分散トランザクション用に宣言します。 |
|
HAイベントがAQ経由でこのサービスに送信されるかどうかを決定します。 |
|
サービスのTAFフェイルオーバー・メソッド。 |
|
サービスのTAFフェイルオーバー・タイプ。 |
|
サービスのTAFフェイルオーバー再試行。 |
|
サービスのTAFフェイルオーバー遅延。 |
|
接続ロード・バランシングで使用されるメソッド(表116-2「接続バランシング目標引数で使用される定数」を参照)。 |
例
DBMS_SERVICE.CREATE_SERVICE('ernie.us.oracle.com','ernie.us.oracle.com');
このプロシージャは、データ・ディクショナリからサービスを削除します。
構文
DBMS_SERVICE.DELETE_SERVICE( service_name IN VARCHAR2);
パラメータ
例
DBMS_SERVICE.DELETE_SERVICE('ernie.us.oracle.com');
このプロシージャは、現行のインスタンスにおいて指定したサービスからセッションを切断します。
構文
DBMS_SERVICE.DISCONNECT_SESSION( service_name IN VARCHAR2);
パラメータ
使用上の注意
このプロシージャは、Oracle Real Application Clustersとともにシングル・インスタンスのコンテキストでも使用できます。
このサブプログラムは、対応するセッションがすべて切断されるまで戻りません。 したがって、コール元は、対応するすべてのセッションが切断されるまで待機しないようにする場合、DBMS_JOB
パッケージを使用するか、バックグラウンドでSQLセッションを設定します。
例
service_name
'ernie.us.oracle.com'
からセッションを切断します。
DBMS_SERVICE.DISCONNECT_SESSION('ernie.us.oracle.com');
このプロシージャは、既存のサービスを変更します。
構文
DBMS_SERVICE.MODIFY_SERVICE( service_name IN VARCHAR2, goal IN NUMBER DEFAULT NULL, dtp IN BOOLEAN DEFAULT NULL, aq_ha_notifications IN BOOLEAN DEFAULT NULL, failover_method IN VARCHAR2 DEFAULT NULL, failover_type IN VARCHAR2 DEFAULT NULL, failover_retries IN NUMBER DEFAULT NULL, failover_delay IN NUMBER DEFAULT NULL, clb_goal IN NUMBER DEFAULT NULL);
パラメータ
表116-9 MODIFY_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前(64文字まで使用可能)。 |
|
サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。
|
|
サービスをDTP用またはXAトランザクションを含む分散トランザクション用に宣言します。 |
|
HAイベントがAQ経由でこのサービスに送信されるかどうかを決定します。 |
|
サービスのTAFフェイルオーバー・メソッド。 |
|
サービスのTAFフェイルオーバー・タイプ。 |
|
サービスのTAFフェイルオーバー再試行。 |
|
サービスのTAFフェイルオーバー遅延。 |
|
接続ロード・バランシングで使用されるメソッド(表116-2「接続バランシング目標引数で使用される定数」を参照)。 |
このプロシージャは、サービスを開始します。 また、このプロシージャは、このservice_name
が含まれるようにservice_name
IOPを変更します。RACでは、このオプションを実装すると、指定したインスタンスに影響があります。
構文
DBMS_SERVICE.START_SERVICE( service_name IN VARCHAR2, instance_name IN VARCHAR2);
パラメータ
表116-10 START_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前(64文字まで使用可能)。 |
|
サービスをアクティブ化するインスタンスの名前(オプション)。このインスタンスでサービスを開始します。 |
例
DBMS_SERVICE.START_SERVICE('ernie.us.oracle.com');
このプロシージャは、サービスを停止し、service_name
IOPを変更してこのservice_name
を削除します。RACでは、CRSにコールし、指定したインスタンスのサービスを停止します(オプション)。
構文
DBMS_SERVICE.STOP_SERVICE( service_name IN VARCHAR2, instance_name IN VARCHAR2);
パラメータ
表116-11 STOP_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前(64文字まで使用可能)。 |
|
サービスを停止するインスタンスの名前(オプション)。このインスタンスでサービスを停止します。 |
例
DBMS_SERVICE.STOP_SERVICE('ernie.us.oracle.com');