ヘッダーをスキップ
Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス
11g リリース1(11.1)
E05686-02
  目次
目次
索引
索引

戻る
戻る
 
次へ
次へ
 

116 DBMS_SERVICE

DBMS_SERVICEパッケージを使用して、シングル・インスタンスのサービスを作成、削除、アクティブ化および非アクティブ化できます。

この章では、次の項目について説明します。


DBMS_SERVICEの使用方法

この項では、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 引数のコール時に使用される定数

名前 説明

GOAL_NONE

NUMBER

0

ロード・バランシング・アドバイザを無効にします。

GOAL_SERVICE_TIME

NUMBER

1

ロード・バランシング・アドバイザは、サービスでの処理の実行に要する時間およびサービスで使用可能な帯域幅に基づきます。

GOAL_THROUGHPUT

NUMBER

2

ロード・バランシング・アドバイザは、サービスで処理が実行される速度およびサービスで使用可能な帯域幅に基づきます。


表116-2 接続バランシング目標引数で使用される定数

名前 説明

CLB_GOAL_SHORT

NUMBER

1

接続ロード・バランシングでは、ロード・バランシング・アドバイザ(goal_service_timeまたはgoal_throughputのいずれか)が有効になっている場合、ロード・バランシング・アドバイザが使用されます。 GOAL=NONE(ロード・バランシング・アドバイザなし)に設定すると、CPU使用率に基づいた簡略アドバイスが使用されます。

CLB_GOAL_LONG

NUMBER

2

サービスごとのセッション数を使用してインスタンスごとの接続数を平均化します。フォームなどの接続時間が長いアプリケーションには、この設定をお薦めします。この設定は、(接続を追加または削除せずに)接続プール自体の負荷に対応するためにそのサイズを調整する場合、ロード・バランシング・アドバイザで使用できます。これは、最も効果的な設定です。


表116-3 TAFフェイルオーバー属性引数で使用される定数

名前 説明

FAILOVER_METHOD_NONE

VARCHAR2

0

このサービスでは、サーバー側のTAFが有効になっていません。

FAILOVER_METHOD_BASIC

VARCHAR2

1

サーバー側のTAFメソッドはBASICです。現在、BASICのみがサポートされています。これは、障害発生時に新しい接続が確立されることを意味します。バックアップ接続を事前に確立することはできません。(PRECONNECTはサポートされていません)。

FAILOVER_TYPE_NONE

NUMBER


サーバー側のTAFタイプはNONEです。

FAILOVER_TYPE_SESSION

NUMBER


サーバー側のTAFフェイルオーバー・タイプはSESSIONです。フェイルオーバー・タイプがSESSIONの場合に障害が発生すると、TAFは残っているノードに再接続し、基本機能のみを備えたデータベース接続を再確立します。フェイルオーバー・コールバックで、カスタマイズ(ALTER SESSIONなど)を再度実行する必要があります。

FAILOVER_TYPE_SELECT

NUMBER


サーバー側のTAFフェイルオーバー・タイプはSELECTです。

FAILOVER_RETRIES

NUMBER


フェイルオーバー時の再試行回数。TAFが再接続と再認証の組合せを試行する回数を指定します。この値は1以上の整数にする必要があります。最大値はUB4MAXVALです。

FAILOVER_DELAY

NUMBER


フェイルオーバーが試行されるまでに遅延する秒数。再接続および再認証が失敗した場合に、TAFで発生する遅延(秒)を指定します。この値は1以上の整数にする必要があります。最大値はUB4MAXVALです。


使用上の注意


例外

次の表に、DBMS_SERVICEパッケージで発生する例外を示します。

表116-4 DBMS_SERVICEの例外

例外 エラー・コード 説明

NULL_SERVICE_NAME

44301

サービス名引数がNULLです。

NULL_NETWORK_NAME

44302

ネットワーク名引数がNULLです。

SERVICE_EXISTS

44303

このサービス名はすでに存在します。

SERVICE_DOES_NOT_EXIST

44304

指定したサービスは存在しません。

SERVICE_IN_USE

44305

指定したサービスは実行中です。

SERVICE_NAME_TOO_LONG

44306

サービス名が長すぎます。

NETWORK_PREFIX_TOO_LONG

44307

ネットワーク名(ドメインを除く)が長すぎます。

NOT_INITIALIZED

44308

サービス・レイヤーが初期化されていません。

GENERAL_FAILURE

44309

不明な障害が発生しています。

MAX_SERVICES_EXCEEDED

44310

サービスが最大数に達しています。

SERVICE_NOT_RUNNING

44311

指定したサービスは実行されていません。

DATABASE_CLOSED

44312

データベースはクローズされています。

INVALID_INSTANCE

44313

インスタンス名引数が無効です。

NETWORK_EXISTS

44314

このネットワーク名はすでに存在します。

NULL_ATTRIBUTES

44315

すべての属性がNULLに設定されています。

INVALID_ARGUMENT

44316

無効な引数が指定されています。

DATABASE_READONLY

44317

データベースは読取り専用でオープンしています。

MAX_SN_LENGTH

44318

実行中のすべてのサービス・ネットワーク名の合計長が、最大許容長を超えました。



DBMS_SERVICEサブプログラムの要約

表116-5 DBMS_SERVICEパッケージのサブプログラム

サブプログラム 説明

CREATE_SERVICEプロシージャ


サービスを作成します。

DELETE_SERVICEプロシージャ


サービスを削除します。

DISCONNECT_SESSIONプロシージャ


サービスを切断します。

MODIFY_SERVICEプロシージャ


サービスを変更します。

START_SERVICEプロシージャ


サービスをアクティブにします。

STOP_SERVICEプロシージャ


サービスを停止します。



CREATE_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プロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

network_name

クライアント接続用にSQLNet接続記述子で使用されるサービスのネットワーク名。 これは、NET service_namesキャラクタ・セットに限定されます(『Oracle Database Net Servicesリファレンス』を参照)。

goal

サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。

  • DBMS_SERVICE.GOAL_SERVICE_TIME

  • DBMS_SERVICE.GOAL_THROUGHPUT

  • DBMS_SERVICE.GOAL_NONE

dtp

サービスをDTP用またはXAトランザクションを含む分散トランザクション用に宣言します。

aq_ha_notifications

HAイベントがAQ経由でこのサービスに送信されるかどうかを決定します。

failover_method

サービスのTAFフェイルオーバー・メソッド。

failover_type

サービスのTAFフェイルオーバー・タイプ。

failover_retries

サービスのTAFフェイルオーバー再試行。

failover_delay

サービスのTAFフェイルオーバー遅延。

clb_goal

接続ロード・バランシングで使用されるメソッド(表116-2「接続バランシング目標引数で使用される定数」を参照)。


DBMS_SERVICE.CREATE_SERVICE('ernie.us.oracle.com','ernie.us.oracle.com');

DELETE_SERVICEプロシージャ

このプロシージャは、データ・ディクショナリからサービスを削除します。

構文

DBMS_SERVICE.DELETE_SERVICE(
   service_name   IN VARCHAR2);

パラメータ

表116-7 DELETE_SERVICEプロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。


DBMS_SERVICE.DELETE_SERVICE('ernie.us.oracle.com');

DISCONNECT_SESSIONプロシージャ

このプロシージャは、現行のインスタンスにおいて指定したサービスからセッションを切断します。

構文

DBMS_SERVICE.DISCONNECT_SESSION(
   service_name   IN VARCHAR2);

パラメータ

表116-8 DISCONNECT_SESSIONプロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。


使用上の注意

service_name 'ernie.us.oracle.com'からセッションを切断します。

DBMS_SERVICE.DISCONNECT_SESSION('ernie.us.oracle.com');

MODIFY_SERVICEプロシージャ

このプロシージャは、既存のサービスを変更します。

構文

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プロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

goal

サービスのワークロード管理目標ディレクティブ。有効な値は、次のとおりです。

  • DBMS_SERVICE.GOAL_SERVICE_TIME

  • DBMS_SERVICE.GOAL_THROUGHPUT

  • DBMS_SERVICE.GOAL_NONE

dtp

サービスをDTP用またはXAトランザクションを含む分散トランザクション用に宣言します。

aq_ha_notifications

HAイベントがAQ経由でこのサービスに送信されるかどうかを決定します。

failover_method

サービスのTAFフェイルオーバー・メソッド。

failover_type

サービスのTAFフェイルオーバー・タイプ。

failover_retries

サービスのTAFフェイルオーバー再試行。

failover_delay

サービスのTAFフェイルオーバー遅延。

clb_goal

接続ロード・バランシングで使用されるメソッド(表116-2「接続バランシング目標引数で使用される定数」を参照)。



START_SERVICEプロシージャ

このプロシージャは、サービスを開始します。 また、このプロシージャは、このservice_nameが含まれるようにservice_name IOPを変更します。RACでは、このオプションを実装すると、指定したインスタンスに影響があります。

構文

DBMS_SERVICE.START_SERVICE(
   service_name  IN VARCHAR2,
   instance_name IN VARCHAR2);

パラメータ

表116-10 START_SERVICEプロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

instance_name

サービスをアクティブ化するインスタンスの名前(オプション)。このインスタンスでサービスを開始します。NULLを指定すると、ローカル・インスタンスでサービスが開始します。シングル・インスタンスでは、現行のインスタンスまたはNULLのみを指定できます。 構成したすべてのインスタンスでサービスを開始するには、DBMS_SERVICE.ALL_INSTANCESを指定します。


DBMS_SERVICE.START_SERVICE('ernie.us.oracle.com');

STOP_SERVICEプロシージャ

このプロシージャは、サービスを停止し、service_name IOPを変更してこのservice_nameを削除します。RACでは、CRSにコールし、指定したインスタンスのサービスを停止します(オプション)。

構文

DBMS_SERVICE.STOP_SERVICE(
   service_name   IN VARCHAR2,
   instance_name  IN VARCHAR2);

パラメータ

表116-11 STOP_SERVICEプロシージャのパラメータ

パラメータ 説明

service_name

データ・ディクショナリでのサービスの名前(64文字まで使用可能)。

instance_name

サービスを停止するインスタンスの名前(オプション)。このインスタンスでサービスを停止します。NULLを指定すると、ローカルでサービスを停止します。シングル・インスタンスでは、現行のインスタンスまたはNULLのみを指定できます。RACおよび排他モードの場合、デフォルトはNULLです。 構成したすべてのインスタンスでサービスを停止するには、DBMS_SERVICE.ALL_INSTANCESを指定します。


DBMS_SERVICE.STOP_SERVICE('ernie.us.oracle.com');