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