18 Oracle Messaging Gatewayスタート・ガイド
次のトピックでは、Oracle Messaging Gateway (MGW)の前提条件と、メッセージ・ゲートウェイのロード、設定およびアンロード手順を説明します。また、mgw.ora
初期化ファイルの設定および変更方法も説明します。
Oracle Messaging Gatewayの前提条件
メッセージ・ゲートウェイでは、メッセージ・ゲートウェイ・エージェントごとに1つのOracle Schedulerジョブを使用します。JOB_QUEUE_PROCESSES
データベース初期化パラメータの値がゼロの場合、Oracle Schedulerジョブは実行されません。値がゼロ以外の場合、事実上、この値は同時に実行できるSchedulerジョブおよびジョブ・キューのジョブの最大数です。
ゼロではない値が設定され、各メッセージ・ゲートウェイ・エージェントの起動をSchedulerジョブが処理するのに十分な大きさであることを確認してください。
Oracle Messaging Gatewayのロードおよび設定
メッセージ・ゲートウェイを実行する前に、次の手順を実行してください。
-
Oracle RAC環境におけるOracle Messaging Gatewayの構成
注意:
この設定手順は、Windowsの32ビットおよび64ビット・バージョンとUNIXベースのオペレーティング・システムの64ビット・バージョン固有のものです。タスクは、「Windowsオペレーティング・システムのみ」または「Linux Operating Systemのみ」と表示されている以外は、WindowsおよびUNIXベースのオペレーティング・システム両方に適用されます。その他のオペレーティング・システムについては、オペレーティング・システム固有のドキュメントを参照してください。
データベースへのデータベース・オブジェクトのロード
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として実行します。
外部プロシージャの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ファイルに追加します。
外部プロシージャの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)))
mgw.ora初期化ファイルの設定
メッセージ・ゲートウェイのデフォルトの初期化ファイルORACLE_HOME
/mgw/admin/mgw.ora
は、テキスト・ファイルです。メッセージ・ゲートウェイの外部プロシージャは、その初期化ファイルを使用して初期化パラメータを取得し、メッセージ・ゲートウェイ・エージェントを起動します。ORACLE_HOME
/mgw/admin/sample_mgw.ora
をmgw.ora
にコピーし、状況に応じて変更します。
次のプロシージャでは、メッセージ・ゲートウェイのすべてのアプリケーションに必要な環境変数およびその他のパラメータを設定します。
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;
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;
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');
Oracle RAC環境におけるOracle Messaging Gatewayの構成
メッセージ・ゲートウェイ・エージェント接続に使用する接続情報の構成
メッセージ・ゲートウェイ・エージェントによるすべてのデータベース接続先を、メッセージ・ゲートウェイ・エージェントのプロセスが実行中のインスタンスにする必要があります。これにより、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');
メッセージ・ゲートウェイ・エージェントに対する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
パラメータに指定された値に基づきます。
Oracle以外のメッセージ・システムの設定
この項の内容は次のとおりです。
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
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
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
が使用されます。
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
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\client
ORACLE_SID
用途:
メッセージ・ゲートウェイの構成時にサービス名が指定されていない場合に使用できます。
形式:
set ORACLE_SID=value
例:
set ORACLE_SID=my_sid
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