DBMS_SERVICE
パッケージを使用して、シングル・インスタンスのサービスを作成、削除、アクティブ化および非アクティブ化できます。
この章では、次の項目について説明します。
概要
セキュリティ・モデル
定数
プロシージャの使用
例外
関連項目: Real Application Clustersの管理サービスについては、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
この項では、DBMS_SERVICE
パッケージの使用に関連する項目について説明します。
DBMS_SERVICE
は、ワークロードの測定、管理、優先順位付け、およびXAトランザクションと分散トランザクションの管理を目的として、RDBMSでの高可用性に関する操作、サービス品質に関する操作、ジョブ・スケジューリングに関する操作およびその他の計画済操作のワークロード管理をサポートします。
Oracle Real Application Clusters(RAC)は、SRVCTL
を使用した場合と同じように、サービス名を複数のインスタンスにまたがって管理できます。DBMS_SERVICE
パッケージを使用すると、シングル・インスタンスでサービスを作成、削除、開始および停止できます。また、サービス名でインスタンスに接続するすべてのセッションを切断することもできます。
関連項目: Oracle Real Application Clustersの詳細は、『Oracle Real Application Clusters管理およびデプロイメント・ガイド』を参照してください。 |
権限
このパッケージを使用するクライアントは、ALTER
SYSTEM
実行権限、およびV$SESSION
表読込み権限を持っている必要があります。
スキーマ
このパッケージは、SYS
スキーマの下に作成する必要があります。
ロール
このパッケージのEXECUTE
権限は、DBA
ロールにのみ付与されます。
DBMS_SERVICE
パッケージでは、次の表に示す定数が使用されます。
引数のコール時に使用される定数は、表142-1「引数のコール時に使用される定数」を参照してください。
接続バランシング目標引数で使用される定数は、表142-2「接続バランシング目標引数で使用される定数」を参照してください。
TAFフェイルオーバー属性の引数で使用される定数については、表142-3「FAN、アプリケーション・コンティニュイティ、トランザクション・ガードおよびTAF用に高可用性属性の引数で使用される定数」を参照してください。
表142-1 引数のコール時に使用される定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
ロード・バランシング・アドバイザを無効にします。 |
|
|
|
ロード・バランシング・アドバイザは、サービスでの処理の実行に要する時間およびサービスで使用可能な帯域幅に基づきます。 |
|
|
|
ロード・バランシング・アドバイザは、サービスで処理が実行される速度およびサービスで使用可能な帯域幅に基づきます。 |
表142-2 接続バランシング目標引数で使用される定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
接続ロード・バランシングでは、ロード・バランシング・アドバイザ( |
|
|
|
サービスごとのセッション数を使用して、インスタンスごとの接続数を平均化します。フォームなどの接続時間が長いアプリケーションには、この設定をお薦めします。この設定は、(接続を追加または削除せずに)接続プール自体の負荷に対応するためにそのサイズを調整する場合、ロード・バランシング・アドバイザで使用できます。これは、最も効果的な設定です。 |
表142-3 FAN、アプリケーション・コンティニュイティ、トランザクション・ガードおよびTAF用に高可用性属性の引数で使用される定数
名前 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
このサービスでは、サーバー側のTAFが有効になっていません。 |
|
|
|
|
|
|
サーバー側のTAFタイプは |
|
|
|
サーバー側のTAFフェイルオーバー・タイプは |
|
|
|
サーバー側のTAFフェイルオーバー・タイプは |
|
|
|
フェイルオーバーが発生する際の接続試行回数です。アプリケーション・コンティニュイティとTAFが再接続と再認証のペアを試行する回数を指定します。0より大きい整数値を指定する必要があります。Oracle Database 12cリリース1 (12.1)でのアプリケーション・コンティニュイティに対するデフォルト値は30です。 |
|
|
|
次の接続試行までの遅延秒数です。これは、再接続と再認証が失敗した場合に、アプリケーション・コンティニュイティとTAFが待機する遅延時間です。0より大きい整数値を指定する必要があります。アプリケーション・コンティニュイティを使用する場合、Oracle Database 12cリリース1 (12.1)でのデフォルト値は10秒です。 |
|
|
|
アプリケーション・コンティニュイティの場合は、非トランザクションのセッション状態をリクエストの実行中にアプリケーションで変更するかどうかをこのパラメータで指定します。すべてのアプリケーションで |
使用上の注意
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
パッケージで発生する例外を示します。
表142-4 DBMS_SERVICEの例外
例外 | エラー・コード | 説明 |
---|---|---|
|
44301 |
サービス名引数が |
|
44302 |
ネットワーク名引数が |
|
44303 |
サービス名はすでに存在します。 |
|
44304 |
指定したサービスは存在しません。 |
|
44305 |
指定したサービスは実行中です。 |
|
44306 |
サービス名が長すぎます。 |
|
44307 |
ネットワーク名(ドメインを除く)が長すぎます。 |
|
44308 |
サービス・レイヤーが初期化されていません。 |
|
44309 |
不明な失敗です。 |
|
44310 |
サービスが最大数に達しています。 |
|
44311 |
指定したサービスは実行されていません。 |
|
44312 |
データベースは閉じられています。 |
|
44313 |
インスタンス名引数が無効です。 |
|
44314 |
ネットワーク名がすでに存在します。 |
|
44315 |
すべての属性が |
|
44316 |
無効な引数が指定されています。 |
|
44317 |
データベースは読取り専用で開かれています。 |
|
44318 |
実行中のすべてのサービス・ネットワーク名の合計長が、最大許容長を超えました。 |
|
44319 |
AQサービスを削除できません。 |
|
44320 |
グローバル・サービスを削除できません。 |
|
44771 |
プラガブル・データベース名が無効です。 |
|
44772 |
Cluster Ready Service(CRS)の操作が失敗しました。 |
|
44773 |
要求された操作を実行できません。 |
|
44774 |
プラガブル・データベースの属性を変更できません。 |
|
44775 |
プラガブル・データベースのサービスを作成できません。 |
|
44776 |
プラガブル・データベースのサービスを削除できません。 |
|
44777 |
プラガブル・データベースのサービスを開始できません。 |
表142-5 DBMS_SERVICEパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
|
サービスを作成します。 |
|
サービスを削除します。 |
|
このサービスの下に実行されているセッションを切断します。 |
|
サービスを変更します。 |
|
サービスをアクティブにします。 |
|
サービスを停止します。 |
このプロシージャは、データ・ディクショナリにサービス名を作成します。service_name
パラメータまたはALTER
SYSTEM
SET
SERVICE_NAMES
コマンドによってサービスを設定すると、サービスはデータ・ディクショナリにも暗黙的に作成されます。
注意: サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、サブプログラムの2番目のバージョンは使用できません。Oracle Clusterware、Oracle RestartまたはOracle Global Data Servicesで管理されていないデータベースには、パラメータの配列インタフェースを含むバージョンが適用されます。新しい属性は、パラメータ・インタフェースを使用する場合のみ使用できます。 |
構文
DBMS_SERVICE.CREATE_SERVICE( service_name IN VARCHAR2, network_name IN VARCHAR2, parameter_array IN svc_parameter_array);
このオーバーロードは、下位互換性を維持する目的で保持されています。
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);
パラメータ
表142-6 CREATE_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。 |
|
クライアント接続用にSQLNet接続記述子で使用されるサービスのネットワーク名です。これは、NET |
|
サービス属性の名前/値ペアに関連付けられた配列です。次の名前がサポートされています。
|
|
サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。
|
|
サービスの対象がX/Open分散トランザクション処理(DTP)または任意の分散トランザクション(特にXA)であることを宣言します。 |
|
OCI/OCCI/ODPでFast Application Notification(FAN)を使用できるかどうかを指定します。Oracle Database12cでは、FANはOracle Notification Services(ONS)を使用します。このパラメータは、FANを有効にするために引き続き使用されます。FANはすべての高可用性システムで推奨されているため、アプリケーション・コンティニュイティではデフォルトで有効になっています。 |
|
アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバー |
|
アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバー |
|
アプリケーション・コンティニュイティとTAFが接続を再試行する回数です。 |
|
アプリケーション・コンティニュイティとTAFが接続を再試行するまでの遅延秒数です。アプリケーション・コンティニュイティに対するデフォルト値は10秒です。サービスによるフェイルオーバーと登録に時間がかかる場合は、遅延時間を0秒に指定しないでください。長い遅延時間は、計画済停止やData Guardへのフェイルオーバーでは有効です。サービスがすでに提供されているRACでは、短い遅延時間が効率的です。 |
|
この引数が サービスの作成中または変更中に、このパラメータの検証は行われません。 接続時に、接続ユーザーがエディションに対する |
|
トランザクション
|
|
|
|
アプリケーション・コンティニュイティの場合、 |
|
要求中にトランザクション以外がどのように変化するかを示します(値は |
|
SQL変換単位の名前です。 |
|
接続ロード・バランシングで使用されるメソッドです(表142-2「接続バランシング目標引数で使用される定数」を参照)。 |
例
DBMS_SERVICE.CREATE_SERVICE('ernie.example.com','ernie.example.com'); DECLARE params dbms_service.svc_parameter_array; BEGIN params('FAILOVER_TYPE') :='TRANSACTION'; params('REPLAY_INITIATION_TIMEOUT'):=1800; params('RETENTION_TIMEOUT') :=86400; params('FAILOVER_DELAY') :=10; params('FAILOVER_RETRIES') :=30; params('commit_outcome') :='true'; params('aq_ha_notifications') :='true'; DBMS_SERVICE.MODIFY_SERVICE('GOLD',params); END;
このプロシージャは、データ・ディクショナリからサービスを削除します。
注意: サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、このサブプログラムは使用できません。 |
このプロシージャは、現行のインスタンスにおいて指定したサービスからセッションを切断します。
構文
DBMS_SERVICE.DISCONNECT_SESSION( service_name IN VARCHAR2, disconnect_option IN NUMBER DEFAULT POST_TRANSACTION);
パラメータ
表142-8 DISCONNECT_SESSIONプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。 |
|
パッケージ定数である次のオプションは、
注意: |
このプロシージャは、既存のサービスを変更します。
注意: サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、サブプログラムの2番目のバージョンは使用できません。Oracle Clusterware、Oracle RestartまたはOracle Global Data Servicesで管理されていないデータベースには、パラメータの配列インタフェースを含むバージョンが適用されます。新しい属性は、パラメータ・インタフェースを使用する場合のみ使用できます。 |
構文
DBMS_SERVICE.MODIFY_SERVICE( service_name IN VARCHAR2, parameter_array IN svc_parameter_array);
このオーバーロードは、下位互換性を維持する目的で保持されています。
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;
パラメータ
表142-9 MODIFY_SERVICEプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
データ・ディクショナリでのサービスの名前です(64文字まで使用可能)。 |
|
サービス属性の名前/値ペアに関連付けられた配列。次の名前がサポートされています。
|
|
サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。
|
|
サービスの対象がX/Open分散トランザクション処理(DTP)または任意の分散トランザクション(特にXA)であることを宣言します。 |
|
OCI/OCCI/ODPでFast Application Notification(FAN)を使用できるかどうかを指定します。Oracle Database12cでは、FANはOracle Notification Services(ONS)を使用します。このパラメータは、FANを有効にするために引き続き使用されます。FANはすべての高可用性システムで推奨されているため、アプリケーション・コンティニュイティではデフォルトで有効になっています。 |
|
アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバー |
|
アプリケーション・コンティニュイティとTAFに使用するサービスのフェイルオーバー |
|
アプリケーション・コンティニュイティとTAFが接続を再試行する回数です。 |
|
アプリケーション・コンティニュイティとTAFが接続を再試行するまでの遅延秒数です。アプリケーション・コンティニュイティに対するデフォルト値は10秒です。サービスによるフェイルオーバーと登録に時間がかかる場合は、遅延時間を0秒に指定しないでください。長い遅延時間は、計画済停止やData Guardへのフェイルオーバーでは有効です。サービスがすでに提供されているRACでは、短い遅延時間が効率的です。 |
|
この引数が サービスの作成中または変更中に、このパラメータの検証は行われません。 接続時に、接続ユーザーがエディションに対する |
|
トランザクション
|
|
|
|
アプリケーション・コンティニュイティの場合、 |
|
要求中にトランザクション以外がどのように変化するかを示します(値は |
|
SQL変換単位の名前です。 |
|
|
|
接続ロード・バランシングで使用されるメソッドです(表142-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以上ではサービス属性の変更が即座に反映されます。
ユーザーは、サービスが起動して実行中の場合でもエディション属性を変更できますが、この操作は安全性に問題があります。この操作では、既存の接続が影響を受けないまま新しいエディションで新規接続が確立されるため、ユーザーは注意して作業を進める必要があります。中間層の操作で、間違ったエディションへの接続が取得される可能性もあります。
このプロシージャは、サービスを開始します。Oracle RACでは、このオプションを実装すると、指定したインスタンスに影響があります。
注意: サービスがOracle Clusterware、Oracle RestartまたはOracle Global Data Servicesによって管理されている場合は、このサブプログラムは使用できません。 |