18 Oracle Messaging Gatewayスタート・ガイド
次のトピックでは、Oracle Messaging Gateway (MGW)の前提条件と、メッセージ・ゲートウェイのロード、設定およびアンロード手順を説明します。また、mgw.ora初期化ファイルの設定および変更方法も説明します。
18.1 Oracle Messaging Gatewayの前提条件
メッセージ・ゲートウェイでは、メッセージ・ゲートウェイ・エージェントごとに1つのOracle Schedulerジョブを使用します。JOB_QUEUE_PROCESSESデータベース初期化パラメータの値がゼロの場合、Oracle Schedulerジョブは実行されません。値がゼロ以外の場合、事実上、この値は同時に実行できるSchedulerジョブおよびジョブ・キューのジョブの最大数です。
ゼロではない値が設定され、各メッセージ・ゲートウェイ・エージェントの起動をSchedulerジョブが処理するのに十分な大きさであることを確認してください。
18.2 Oracle Messaging Gatewayのロードおよび設定
メッセージ・ゲートウェイを実行する前に、次の手順を実行してください。
-
Oracle RAC環境におけるOracle Messaging Gatewayの構成
注意:
この設定手順は、Windowsの32ビットおよび64ビット・バージョンとUNIXベースのオペレーティング・システムの64ビット・バージョン固有のものです。タスクは、「Windowsオペレーティング・システムのみ」または「Linux Operating Systemのみ」と表示されている以外は、WindowsおよびUNIXベースのオペレーティング・システム両方に適用されます。その他のオペレーティング・システムについては、オペレーティング・システム固有のドキュメントを参照してください。
18.2.1 データベースへのデータベース・オブジェクトのロード
SQL*Plusを使用して、ユーザーSYSまたはSYSDBAとしてORACLE_HOME/mgw/admin/catmgw.sqlを実行します。このスクリプトによって、ロール、表、ビュー、オブジェクト型およびPL/SQLパッケージを含む、メッセージ・ゲートウェイに必要なデータベース・オブジェクトがロードされます。これによって、メッセージ・ゲートウェイのPL/SQLパッケージのパブリック・シノニムが作成されます。MGW_ADMINISTRATOR_ROLEおよびMGW_AGENT_ROLE,という2つのロールが作成され、特定の権限が付与されます。すべてのオブジェクトは、SYSに所有されます。
注意:
CDB環境では、ORACLE_HOME/mgw/admin/catmgw.sqlをPDB rootとして実行します。
18.2.2 外部プロシージャのlistener.oraの変更
この手順は、UNIXベースのオペレーティング・システム専用です。Windowsオペレーティング・システムでは、リスナーについての静的サービス情報は必要ありません。
メッセージ・ゲートウェイのPL/SQLパッケージで外部プロシージャがコールされるように、listener.oraを変更する必要があります。
例18-1 リスナーの静的サービス情報の追加
# Add a SID_DESC
SID_LIST_LISTENER= (SID_LIST=
(SID_DESC =
(SID_NAME= mgwextproc)
(ENVS=
"LD_LIBRARY_PATH=JRE_HOME/lib/amd64:JRE_HOME/lib/amd64/server:ORACLE_HOME/lib")
(ORACLE_HOME=ORACLE_HOME)
(PROGRAM = extproc))表18-1 SID_DESCパラメータ
| パラメータ | 説明 |
|---|---|
|
|
|
|
|
外部プロシージャを実行するために必要な環境変数 JRE_HOME/lib/PLATFORM_TYPE JRE_HOME/lib/PLATFORM_TYPE/server ORACLE_HOME/lib サード・パーティのメッセージ・システムに必要な追加ライブラリも含まれる必要があります。「Oracle以外のメッセージ・システムの設定」を参照してください。
|
|
|
ユーザーのOracleホーム・ディレクトリ。 |
|
|
外部プロシージャのエージェントの名前( |
注意:
ORACLE_HOMEがOracleインストレーションのルート・ディレクトリを表すように、JRE_HOMEはJREインストレーションのルート・ディレクトリを表します。Oracle DatabaseとともにインストールされたJREの使用をお薦めします。
例18-1では、SID_NAME mgwextprocをLinux x86用のlistener.oraファイルに追加します。
18.2.3 外部プロシージャのtnsnames.oraの変更
外部プロシージャに対して、tnsnames.oraで、例18-2で示したように、接続記述子がlistener.oraで構成された情報に一致するネット・サービス名MGW_AGENTを構成します。ネット・サービス名は、MGW_AGENTである必要があります(この値は固定)。KEYの値は、listener.oraでIPCプロトコルに対して指定されたKEYの値に一致する必要があります。SIDの値は、listener.oraでSID_DESCエントリのSID_NAMEに対して指定された値に一致する必要があります。
注意:
sqlnet.oraのnames.default_domainパラメータを使用してデフォルト・ドメインを設定した場合は、そのドメインをtnsnames.oraのネット・サービス名MGW_AGENTに追加する必要があります。たとえば、sqlnet.oraにエントリnames.default_domain=acme.comが含まれる場合、tnsnames.oraのネット・サービス名はMGW_AGENT.acme.comである必要があります。
例18-2 MGW_AGENTの構成
MGW_AGENT = (DESCRIPTION= (ADDRESS_LIST= (ADDRESS= (PROTOCOL=IPC)(KEY=EXTPROC))) (CONNECT_DATA= (SID=mgwextproc)))
18.2.4 mgw.ora初期化ファイルの設定
メッセージ・ゲートウェイのデフォルトの初期化ファイルORACLE_HOME/mgw/admin/mgw.oraは、テキスト・ファイルです。メッセージ・ゲートウェイの外部プロシージャは、その初期化ファイルを使用して初期化パラメータを取得し、メッセージ・ゲートウェイ・エージェントを起動します。ORACLE_HOME/mgw/admin/sample_mgw.oraをmgw.oraにコピーし、状況に応じて変更します。
次のプロシージャでは、メッセージ・ゲートウェイのすべてのアプリケーションに必要な環境変数およびその他のパラメータを設定します。
18.2.5 Oracle Messaging Gateway管理者ユーザーの作成
メッセージ・ゲートウェイの管理作業を実行するには、例18-3に示したように、MGW_ADMINISTRATOR_ROLE権限を所有するデータベース・ユーザーを作成する必要があります。
例18-3 メッセージ・ゲートウェイ管理者ユーザーの作成
CREATE USER admin_user IDENTIFIED BY admin_password; GRANT CREATE SESSION to admin_user; GRANT MGW_ADMINISTRATOR_ROLE to admin_user;
18.2.6 Oracle Messaging Gatewayのエージェント・ユーザーの作成
メッセージ・ゲートウェイ・エージェントからデータベースへの接続を確立するには、例18-4に示したように、MGW_AGENT_ROLE権限を所有するデータベース・ユーザーを作成する必要があります。
例18-4 メッセージ・ゲートウェイ・エージェント・ユーザーの作成
CREATE USER agent_user IDENTIFIED BY agent_password; GRANT CREATE SESSION to agent_user; GRANT MGW_AGENT_ROLE to agent_user;
18.2.7 Oracle Messaging Gateway接続情報の構成
メッセージ・ゲートウェイ・エージェント・ユーザーの作成後、管理ユーザーとしてDBMS_MGWADM.ALTER_AGENTを使用し、例18-5に示したように、メッセージ・ゲートウェイ・エージェントによるデータベースへの接続に使用されるユーザー名、パスワードおよびデータベース接続文字列でメッセージ・ゲートウェイを構成します。「Oracle Messaging Gatewayのエージェント・ユーザーの作成」で作成したメッセージ・ゲートウェイのユーザー名とパスワードを使用します。データベース接続文字列パラメータは、tnsnames.oraの新しいサービス名(パフォーマンスを向上させるにはIPCプロトコルを使用)またはNULLのいずれかに設定できます。NULLに設定する場合は、mgw.oraにoracle_sidパラメータを設定する必要があります。
このリリースの場合は、DBMS_MGWADM.ALTER_AGENTをコールするとき、常にデータベース接続文字列パラメータに対してNULL以外の値を指定してください。
例18-5 メッセージ・ゲートウェイの接続情報の構成
set echo off
set verify off
connect admin_user
ACCEPT password CHAR PROMPT 'Enter the password for AGENT_USER: ' HIDE
EXEC DBMS_MGWADM.ALTER_AGENT(
agent_name => 'default_agent',
username => 'agent_user',
password => '&password',
database => 'agent_database');18.2.8 Oracle RAC環境におけるOracle Messaging Gatewayの構成
18.2.8.1 メッセージ・ゲートウェイ・エージェント接続に使用する接続情報の構成
メッセージ・ゲートウェイ・エージェントによるすべてのデータベース接続先を、メッセージ・ゲートウェイ・エージェントのプロセスが実行中のインスタンスにする必要があります。これにより、Oracle RAC環境で確実に適切なフェイルオーバー動作が得られます。このように接続を構成するには、インスタンスで少し異なる方法でtnsnames.oraファイルを使用させます。各ファイルには同じネット・サービス名のエントリがありますが、接続データはそのtnsnames.oraファイルに関連付けられているインスタンスのみを参照します。共通のネット・サービス名は、DBMS_MGWADM.ALTER_AGENTを使用してメッセージ・ゲートウェイ・エージェントのデータベース接続情報を構成するときに、データベース・パラメータに使用されます。
たとえば、OraDB1およびOraDB2という2つのインスタンスで構成される2インスタンスOracle RAC環境で、ネット・サービス名AGENT_DBが使用される場合、インスタンスOraDB1のtnsnames.oraは次のようになります。
AGENT_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost1.mycorp.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = OraDB10.mycorp.com)
(INSTANCE_NAME = OraDB1)
)
)
OraDB2のtnsnames.oraは次のようになります。
AGENT_DB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = myhost2.mycorp.com)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = OraDB10.mycorp.com)
(INSTANCE_NAME = OraDB2)
)
)
その後、次のコマンドを実行して、メッセージ・ゲートウェイ・エージェント・ユーザーの接続情報を構成します。
EXEC DBMS_MGWADM.ALTER_AGENT( agent_name => 'default_agent', username => 'agent_user', password => 'agent_password', database => 'agent_db');
18.2.8.2 メッセージ・ゲートウェイ・エージェントに対するOracle RACインスタンスの設定
メッセージ・ゲートウェイは、Oracle Schedulerのデータベース・サービス・サポートを活用して、メッセージ・ゲートウェイ・エージェントの外部プロセスのサービス・アフィニティを指定します。デフォルトでは、メッセージ・ゲートウェイ・エージェントは、すべてのインスタンスにマップされているデフォルトのデータベース・サービスを使用します。メッセージ・ゲートウェイ・エージェントが、特定のグループのデータベース・インスタンスで起動するようにするには、これらのインスタンスにデータベース・サービスを作成し、DBMS_MGWADM.CREATE_AGENTまたはDBMS_MGWADM.ALTER_AGENTプロシージャのSERVICEパラメータを使用して、メッセージ・ゲートウェイ・エージェントに割り当てる必要があります。DBMS_MGWADM.STARTUPプロシージャによって、Oracle Schedulerジョブの実行時にメッセージ・ゲートウェイ・エージェントの外部プロセスを開始するSchedulerジョブが送られます。Schedulerジョブは、メッセージ・ゲートウェイ・エージェント用に構成されたデータベース・サービスを使用します。
SERVICEパラメータで指定されるデータベース・サービスは、Oracle Schedulerジョブのサービス・アフィニティ(メッセージ・ゲートウェイの外部プロセスのサービス・アフィニティを含む)にのみ使用されます。メッセージ・ゲートウェイ・エージェント・ユーザーによって作成されたデータベース接続には使用されません。それらのJDBCクライアント接続は、DATABASEおよびCONNTYPEパラメータに指定された値に基づきます。
18.3 Oracle以外のメッセージ・システムの設定
この項の内容は次のとおりです。
18.3.1 TIB/Rendezvousの設定
TIB/Rendezvous Javaクライアント・アプリケーションとして実行する場合、メッセージ・ゲートウェイ・エージェントには、メッセージ・ゲートウェイ・エージェントが実行されるコンピュータ上にTIB/Rendezvousソフトウェアをインストールする必要があります。この項では、TIBRV_HOMEはインストールされたTIB/Rendezvousソフトウェアの場所を参照します。
listener.oraの変更
Linux Operating Systemの場合は、メッセージ・ゲートウェイのエントリのLD_LIBRARY_PATHには、TIB/Rendezvous共有ライブラリ・ファイルにアクセスするためのエージェントのTIBRV_HOME/libを含める必要があります。
関連項目:
Windowsオペレーティング・システムの場合は、listener.oraを変更する必要はありません。ただし、システム環境変数PATHにTIBRV_HOME\binを含める必要があります。
mgw.oraの変更
MGW_PRE_PATHには、通常TIBRV_HOME/binにあるTIB/Rendezvousライセンス・チケット・ファイル(tibrv.tkt)が入っているディレクトリを含める必要があります。
CLASSPATHには、TIB/Rendezvous jarファイルTIBRV_HOME/lib/tibrvj.jarを含める必要があります。独自にカスタマイズされたTIB/Rendezvousアドバイザ・メッセージ・コールバックを使用する場合は、コールバック・クラスの場所も含める必要があります。
次のJavaプロパティを設定して、デフォルトの設定を変更します。
-
oracle.mgw.tibrv.encoding -
oracle.mgw.tibrv.intraProcAdvSubjects -
oracle.mgw.tibrv.advMsgCallback関連項目:
例18-6 Javaプロパティの設定
setJavaProp oracle.mgw.tibrv.encoding=ISO8859_1 setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects=_RV.> setJavaProp oracle.mgw.tibrv.advMsgCallback=MyadvCallback
18.3.2 WebSphere MQ Base JavaまたはJMSの設定
JavaおよびJMSのWebSphere MQクライアントとWebSphere MQクラスは、メッセージ・ゲートウェイ・エージェントが作動するコンピュータ上にインストールする必要があります。この項では、MQ_HOMEはインストール済クライアントの場所を参照します。Linux Operating Systemの場合は、この場所は常に/opt/mqmです。Windowsオペレーティング・システムの場合は、インストール場所を変更できます。
listener.oraの変更
メッセージ・ゲートウェイによるWebSphere MQへのアクセスには、listener.oraの変更は必要ありません。
mgw.oraの変更
WebSphere MQ Base Java (JMS以外)インタフェースを使用する場合は、「mgw.ora初期化ファイルの設定」の設定以外に少なくとも次のパスを含むようにCLASSPATHを設定する必要があります。
-
MQ_HOME/java/lib/com.ibm.mq.jar -
MQ_HOME/java/lib/connector.jar
WebSphere MQ JMSインタフェースを使用する場合は、CLASSPATHを設定して、「mgw.ora初期化ファイルの設定」の設定以外に少なくとも次のパスを含める必要があります。
-
MQ_HOME/java/lib/com.ibm.mqjms.jar -
MQ_HOME/java/lib/com.ibm.mq.jar -
MQ_HOME/java/lib/connector.jar
18.6 mgw.ora初期化ファイルについて
メッセージ・ゲートウェイ・エージェントを起動すると、メッセージ・ゲートウェイによって、テキスト・ファイルから初期化情報が読み込まれます。初期化ファイルには、初期化パラメータ、環境変数およびJavaプロパティを設定するための行が含まれています。各エントリは1行に指定する必要があります。先頭の空白は、すべての場合に切り捨てられます。
メッセージ・ゲートウェイの管理者は、DBMS_MGWADM.CREATE_AGENTおよびDBMS_MGWADM.ALTER_AGENTにより、メッセージ・ゲートウェイ・エージェントに使用される初期化ファイルを指定できます。初期化ファイルが指定されない場合、デフォルトの初期化ファイルが使用されます。
デフォルトのエージェントのデフォルト初期化ファイルは、ORACLE_HOME/mgw/admin/mgw.oraにあります。
指定されたエージェントのデフォルト初期化ファイルはORACLE_HOME/mgw/admin/mgw_AGENTNAME.oraで、AGENTNAMEは、メッセージ・ゲートウェイ・エージェントの名前を大文字で表記したものです。たとえば、エージェント名がmy_agentの場合、エージェントのデフォルト初期化ファイルはORACLE_HOME/mgw/admin/mgw_MY_AGENT.oraです。指定されたエージェントのデフォルトの初期化ファイルが検出されなかった場合、ORACLE_HOME/mgw/admin/mgw.oraが使用されます。
18.6.1 mgw.ora初期化パラメータ
通常、初期化パラメータは、「name=value<NL>」という書式の行で指定されます。ここで、nameはパラメータ名、valueはパラメータの値、<NL>は改行を表します。
log_directory
用途:
メッセージ・ゲートウェイのログ・ファイルまたはトレース・ファイルが作成されるディレクトリを指定します。
形式:
log_directory = valueデフォルト:
ORACLE_HOME/mgw/log例:
log_directory = /private/mgwlog
log_level
用途:
メッセージ・ゲートウェイ・エージェントによって記録されるロギングの詳細レベルを指定します。ロギング・レベルは、メッセージ・ゲートウェイ・エージェントの実行中にDBMS_MGWADM.SET_LOG_LEVELをコールすることで動的に変更できます。Oracleでは、常にログレベル0(デフォルト値)を使用することをお薦めします。
形式:
log_level = value値は次のとおりです。
0: 基本的なロギングの場合に使用します。これは、DBMS_MGWADM.BASIC_LOGGINGと同じです。
1: 低レベルのトレースの場合に使用します。これは、DBMS_MGWADM.TRACE_LITE_LOGGINGと同じです。
2: 高レベルのトレースの場合に使用します。これは、DBMS_MGWADM.TRACE_HIGH_LOGGINGと同じです。
3: デバッグ・トレースの場合に使用します。これは、DBMS_MGWADM.TRACE_DEBUG_LOGGINGと同じです。
4: 高レベルのデバッグ・トレースの場合に使用します。これは、DBMS_MGWADM.TRACE_DEBUG_HIGH_LOGGINGと同じです
例:
log_level = 0
18.6.2 mgw.ora環境変数
ユーザーは、メッセージ・ゲートウェイの処理環境を直接制御できないため、初期化ファイルを使用して特定の環境変数を設定する必要があります。現在、メッセージ・ゲートウェイ・エージェントによって使用されている環境変数は、CLASSPATH、MGW_PRE_PATHおよびORACLE_SIDです。
CLASSPATHおよびMGW_PRE_PATHなどの環境変数は、メッセージ・ゲートウェイ・エージェントが必要な共有オブジェクトやJavaクラスなどを検出できるように設定されます。環境変数は、「set env_var=value<NL>」または「setenv env_var=value<NL>」という書式の行で指定されます。ここで、env_varは設定する環境変数の名前、valueは環境変数の値、<NL>は改行を表します。
CLASSPATH
用途:
Oracle Database Advanced QueuingとOracle以外のメッセージ・システム間の伝播のために、メッセージ・ゲートウェイ・エージェントに必要なJavaクラスを検索するJava Virtual Machineによって使用されます。
形式:
set CLASSPATH=value
例:
set CLASSPATH=ORACLE_HOME/jdbc/lib/ojdbc6.jar:JRE_HOME/lib/rt.jar: ORACLE_HOME/sqlj/lib/runtime12.jar:ORACLE_HOME/jlib/orai18n.jar:ORACLE_HOME/rdbms/ jlib/jmscommon.jar:ORACLE_HOME/rdbms/jlib/aqapi.jar:ORACLE_HOME/jlib/jta.jar: /opt/mqm/java/lib/com.ibm.mq.jar:/opt/mqm/java/lib/com.ibm.mqjms.jar:/opt/mqm/java /lib/connector.jar
MGW_PRE_PATH
用途:
メッセージ・ゲートウェイのプロセスによって継承されたパスの先頭に追加されます。Windowsオペレーティング・システムの場合、この変数を設定してライブラリjvm.dllが存在する位置を指定する必要があります。
形式:
set MGW_PRE_PATH=value例:
set MGW_PRE_PATH=JRE_HOME\bin\clientORACLE_SID
用途:
メッセージ・ゲートウェイの構成時にサービス名が指定されていない場合に使用できます。
形式:
set ORACLE_SID=value例:
set ORACLE_SID=my_sid
18.6.3 mgw.ora Javaプロパティ
TIB/Rendezvousサブジェクトを使用する場合、メッセージ・ゲートウェイJVMのJavaシステム・プロパティを指定する必要があります。これには、メッセージ・ゲートウェイ初期化ファイルのsetJavaPropパラメータを使用できます。Javaプロパティは、「setJavaProp prop_name=value<NL>」という書式の行で指定されます。ここで、prop_nameは設定するJavaプロパティの名前、valueはJavaプロパティの値、<NL>は改行記号を表します。
oracle.mgw.batch_size
用途:
このJavaプロパティは、1つのトランザクションで伝播されるメッセージの最大数を表します。メッセージ・ゲートウェイのジョブ・オプションMsgBatchSizeが指定されていない場合のデフォルト値として機能します。デフォルトから変更された場合、予期されるメッセージのサイズとメッセージ・ゲートウェイ・エージェントのメモリーを考慮する必要があります(DBMS_MGWADM.ALTER_AGENTのmax_memoryパラメータを参照)。このJavaプロパティの最小値は1、最大値は100で、デフォルトは30です。
関連項目:
『Oracle Database PL/SQLパッケージ・プロシージャおよびタイプ・リファレンス』のDBMS_MGWADMに関する項
構文:
setJavaProp oracle.mgw.batch_size=value例:
setJavaProp oracle.mgw.batch_size=10
oracle.mgw.polling_interval
用途:
このパラメータは、伝播元キューの使用可能メッセージのポーリング間の経過時間(1000分の1秒単位)を指定します。メッセージ・ゲートウェイで使用されるデフォルトのポーリング間隔は5000ミリ秒(5秒)です。このJavaプロパティの最小値は100ミリ秒で、最大値は60秒です。
構文:
setJavaProp oracle.mgw.polling_interval=value 例:
setJavaProp oracle.mgw.polling_interval=1000
oracle.mgw.tibrv.encoding
用途:
このパラメータでは、TIB/Rendezvousメッセージ・システム・リンクで使用される文字エンコードを指定します。TIB/Rendezvous制約により、すべての構成済TIB/Rendezvousリンクに許可されているキャラクタ・セットは1つのみです。デフォルトは、ISO 8859-1またはJavaシステム・プロパティfile.encodingによって指定されたキャラクタ・セットです。
構文:
setJavaProp oracle.mgw.tibrv.encoding=value 例:
setJavaProp oracle.mgw.tibrv.encoding=ISO8859_1
oracle.mgw.tibrv.intraProcAdvSubjects
用途
このパラメータはすべてのTIB/Rendezvousメッセージ・システム・リンクに使用され、プロセス内転送で表示されるシステム勧告サブジェクトの名前を指定します。
構文
setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects= advisorySubjectName[:advisorySubjectName]
例:
setJavaProp oracle.mgw.tibrv.intraProcAdvSubjects=_RV.>
oracle.mgw.tibrv.advMsgCallback
用途:
このパラメータはすべてのTIB/Rendezvousメッセージ・システム・リンクに使用され、TibrvMsgCallbackインタフェースを実装してシステム勧告メッセージを処理するJavaクラスの名前を指定します。指定されていない場合は、メッセージ・ゲートウェイによって提供されるデフォルトのシステム勧告メッセージ・ハンドラが使用され、メッセージ・ゲートウェイのログ・ファイルにシステム勧告メッセージが書き込まれます。指定されている場合は、クラス・ファイルが格納されているディレクトリがmgw.oraのCLASSPATHに含まれている必要があります。
構文:
setJavaProp oracle.mgw.tibrv.advMsgCallback=className例:
setJavaProp oracle.mgw.tibrv.advMsgCallback=MyAdvCallback
oracle.net.tns_admin
用途:
このパラメータはtnsnames.oraファイルのディレクトリを指定します。メッセージ・ゲートウェイ・エージェントがJDBC Thinドライバを使用するよう構成されており、エージェントの接続情報のデータベース指定子がTNSNamesの別名の場合、設定する必要があります。JDBC OCIドライバが使用されている場合や、データベース指定子がTNSNamesの別名ではない場合は、設定する必要はありません。
構文:
setJavaProp oracle.net.tns_admin=value例:
setJavaProp oracle.net.tns_admin=/myoraclehome/network/admin