OSCリージョンの設定
本章では、OSCリージョンを構成するための設定と設定に必要な手順について説明します。
1. 概要
OSCリージョンは、ユーザーの業務プログラムを処理するアプリケーション・サーバーと追加的な機能を実行する補助サーバーで構成されます。補助サーバーは、TDQログ・タイプとOpenFrame Managerの[OSC]メニューを使用する機能をサポートします。
以下は、アプリケーション・サーバーを準備する手順です。
-
アプリケーション・サーバー・バイナリを作成し、サーバーの環境設定ファイルを設定します。
-
アプリケーション・サーバーで使用するデータベース・テーブルを作成します。
-
アプリケーション・サーバーで使用するデータセットを作成します。
-
アプリケーション・サーバーで使用するデフォルト・リソースとユーザー・リソースを登録します。
-
Tmax環境設定ファイルにアプリケーション・サーバーとサービスを登録します。
-
アプリケーション・サーバーの起動と終了に必要なスクリプト・ファイルを準備します。
2. アプリケーション・サーバー・バイナリの作成
OSCアプリケーション・サーバーを使用するには、サーバー・プロセス・バイナリを作成する必要があります。oscbuildツールを使用してサーバー・バイナリを作成した後、アプリケーション・サーバーの構成に従って、各サーバーに必要な環境設定ファイルを作成して設定します。環境設定の詳細については、OSCシステムの設定を参照してください。
2.1. ソース・ファイルの作成
サーバー・バイナリの作成時に必要に応じてユーザー・ソース・ファイルを作成します。OSCでは、5つの関数を使用して指定または追加することができます。
ユーザー・ソース・ファイルで下の表に示す関数のロジックを作成し、サーバーの起動および終了時に必要な追加操作を実行できます。また、非XA環境でトランザクションの開始とSYNCPOINT、SYNCPOINT ROLLBACKへの対応機能を追加することができます。
追加操作がない場合は、ソース・ファイルを作成する必要はありません。コンパイル時に、oscbuildツールの-fオプションを使用してユーザー・ソース・ファイルを指定します。
OSCで各関数を呼び出す時点は以下のとおりです。
関数名 | 説明 |
---|---|
otpsvrinit |
非XA環境かXA環境かに関係なく、リージョン・サーバーの起動時に呼び出します。 |
otpsvcinit |
非XA環境でトランザクションの開始時に呼び出します。 |
otpsvrcommit |
非XA環境でユーザーやOSCによってSYNCPOINTが呼び出された際に呼び出します。 |
otpsvrrollback |
非XA環境でユーザーやOSCによってSYNCPOINT ROLLBACKが呼び出された際に呼び出します。 |
otpsvrdone |
非XA環境かXA環境かに関係なく、リージョン・サーバーの終了時に呼び出します。 |
以下は、システムが提供するOSCアプリケーション・サーバーのサンプル・ソースです。
int otpsvrinit(int argc, char *argv[]) { return 0; } int otpsvcinit() { return 0; } int otpsvrcommit() { return 0; } int otpsvrrollback() { return 0; } int otpsvrdone() { return 0; }
2.2. コンパイルとデプロイ
oscbuildツールを使用して、アプリケーション・サーバー・バイナリを作成します。oscbuildツールは、OSCシステムがインストールされている環境に従ってコンパイル・オプションとサーバー・バイナリ名を設定できる機能を提供しています。
以下は、oscbuildを使用してLinux 64ビット環境で使用するサーバー・バイナリを作成する例です。サーバー・バイナリ名を特に指定しない場合、OSC00001が設定されます。
$ oscbuild -o LINUX64
コンパイルが完了すると、OSC00001というバイナリが上記のコマンドを実行したディレクトリに生成されます。生成されたバイナリは、名前を変更することができます。サーバー・バイナリ名は8文字以下で設定します。バイナリ・ファイルを、Tmax環境設定ファイルの該当ノードのAPPDIRオプションに設定されているディレクトリにコピーします。
oscbuildツールの使用方法については、OpenFrame OSC『ツールリファレンスガイド』を参照してください。 |
3. アプリケーション・サーバーDBテーブルの作成
アプリケーション・サーバーの運用に必要なデータを保存するデータベース・テーブルを作成します。テーブルの作成には、oscinitツールを使用します。
以下は、テーブルの種類と特性についての説明です。
-
リージョン管理テーブル
OSCリージョンの状態を管理するための情報を保存します。
テーブル名 説明 OFM_OSC_REGION_MASTER
現在起動しているリージョンの状態情報を保存します。ノード名、起動状態、サーバー状態などを保存します。
OFM_OSC_REGION_LIST
ドメイン上で起動しているリージョンのリストを確認できます。リージョン・サーバーがダウンした場合、そのリージョン名をキーとして持つ他のシステム・テーブルのレコードが一括して削除されます。
-
システム定義テーブル
OSCシステムの運用に必要なリソース定義を保存します。
テーブル名 説明 OFM_OSC_SD_GROUP
リソース・グループの定義を保存します。
OFM_OSC_SD_CONN
CONNECTIONリソースの定義を保存します。
OFM_OSC_SD_FILE
FILEリソースの定義を保存します。
OFM_OSC_SD_PROG
PROGRAMリソースの定義を保存します。
OFM_OSC_SD_TYPE_TERM
TYPETERMリソースの定義を保存します。
OFM_OSC_SD_TERM
TERMINALリソースの定義を保存します。
OFM_OSC_SD_TSMODEL
TSMODELリソースの定義を保存します。
OFM_OSC_SD_JNL_MODEL
JOURNALMODELリソースの定義を保存します。
OFM_OSC_SD_MAP_SET
MAPSETリソースの定義を保存します。
OFM_OSC_SD_WEB_SVC
WEBSERVICEリソースの定義を保存します。
OFM_OSC_SD_PIPIELINE
PIPELINEリソースの定義を保存します。
OFM_OSC_SD_ENQ_MODEL
ENQMODELリソースの定義を保存します。
OFM_OSC_SD_TCPIP_SVC
TCPIPSERVICEリソースの定義を保存します。
OFM_OSC_SD_SESSION
SESSIONSリソースの定義を保存します。
OFM_OSC_SD_PARTITIONSET
PARTITIONSETリソースの定義を保存します。
OFM_OSC_SD_PROFILE
PROFILEリソースの定義を保存します。
OFM_OSC_SD_LIBRARY
LIBRARYリソースの定義を保存します。
OFM_OSC_SD_URIMAP
URIMAPリソースの定義を保存します。
OFM_OSC_SD_TRANS
TRANSACTIONリソースの定義を保存します。
OFM_OSC_SD_TRAN_CLASS
TRANCLASSリソースの定義を保存します。
OFM_OSC_SD_TDQ
TDQUEUEリソースの定義を保存します。
-
RTSDテーブル
OSCサーバーの起動中に使用されるリソース情報を保存します。
テーブル名 説明 OFM_OSC_CONN
CONNECTIONリソース情報を保存します。
OFM_OSC_FILE
FILEリソース情報を保存します。
OFM_OSC_PROG
PROGRAMリソース情報を保存します。
OFM_OSC_TERM
TERMINALリソース情報を保存します。
OFM_OSC_TSMODEL
TSMODELリソース情報を保存します。
OFM_OSC_JNL_MODEL
JOURNALMODELリソース情報を保存します。
OFM_OSC_MAP_SET
MAPSETリソース情報を保存します。
OFM_OSC_WEB_SVC
WEBSERVICEリソース情報を保存します。
OFM_OSC_PIPIELINE
PIPELINEリソース情報を保存します。
OFM_OSC_ENQ_MODEL
ENQMODELリソース情報を保存します。
OFM_OSC_TCPIP_SVC
TCPIPSERVICEリソース情報を保存します。
OFM_OSC_SESSION
SESSIONSリソース情報を保存します。
OFM_OSC_PARTITIONSET
PARTITIONSETリソース情報を保存します。
OFM_OSC_PROFILE
PROFILEリソース情報を保存します。
OFM_OSC_LIBRARY
LIBRARYリソース情報を保存します。
OFM_OSC_URIMAP
URIMAPリソース情報を保存します。
OFM_OSC_TRANS
TRANSACTIONリソース情報を保存します。
OFM_OSC_TRAN_CLASS
TRANCLASSリソース情報を保存します。
OFM_OSC_TDQ
TDQUEUEリソース情報を保存します。
OFM_OSC_NETNAME
NETNAMEリソース情報を保存します。
-
システム・テーブル
OSCサーバーの運用に必要な設定とシステム情報を保存します。
テーブル名 説明 OFM_OSC_GETMAIN
リージョン・プロセス間で共有されるGETMAIN領域のアドレス値を保存します。
OFM_OSC_TRAN2SVC
トランザクション名に対応するサービス名を保存します。
OFM_OSC_SVRINFO
リージョン・プロセスの状態情報を保存します。
OFM_OSC_UPDATE_FILE
FILEリソースの更新要求を保存します。
OFM_OSC_UPDATE_TDQ
TDQリソースの更新要求を保存します。
OFM_OSC_OPEN_FILE
FILEリソースの開放要求を保存します。
OFM_OSC_OPEN_TDQ
TDQリソースの開放要求を保存します。
OFM_OSC_CONFIG
OSCの一部環境設定を保存します。
OFM_OSC_SACEE
端末IDに対応するSACEE値を保存します。
OFM_OSC_KEY2TRAN
ショートカットキーに対応するトランザクション名を保存します。
OFM_OSC_CSPG
CSPGコマンドを保存します。
OFM_OSC_TSQINFO
TSQの状態情報を保存します。
OFM_OSC_TSQDATA
TSQのデータを保存します。
-
サービス・ログ・テーブル
トランザクションの統計情報を保存します。サービス・ログの詳細については、OSCの運用を参照してください。
テーブル名 説明 OFM_OSC_OLOG
トランザクションの統計情報を保存します。
-
システム・タイム・テーブル
OSCシステムのタイム・テーブル情報を保存します。
テーブル名 説明 OFM_OSC_TX_TIME
OSCシステムの時間と日付情報を保存します。
|
4. アプリケーション・サーバー・データセットの作成
OSCアプリケーション・サーバーに定義されているデータセットは、サーバーを起動する前に生成されている必要があります。サーバーを起動する前にデータセットが生成されていない場合、サーバーの起動時にエラーが発生します。
データセットを作成するには、バッチ・ジョブを実行するか、IDCAMSユーティリティを使用します。OpenFrame Batchがインストールされていない場合は、idcamsツールを使用してデータセットを作成することもできます。
本節では、IDCAMSユーティリティ・スクリプトを使用してデータセットを作成する例と対応するidcamsツールの使用例を説明します。
|
4.1. パーティション内TDQデータセットの作成
パーティション内TDQデータセットは、以下のように設定する必要があります。
-
TSAMキー順データセット(KSDS)として作成します。
-
データセットのキー・サイズは8に固定します。
-
レコード長とレコード形式は、実際にTDQのパーティション内キューを使用する際に作成するデータ長に合わせて直接定義します。
以下は、OSC.TDQLIB.INTRA.OSC00001というパーティション内TDQデータセットを作成するIDCAMSスクリプトです。最初の行は、同じ名前のデータセットが存在する場合は削除するように指示するコマンド文です。
DELETE OSC.TDQLIB.INTRA.OSC00001 CLUSTER DEFINE CLUSTER (NAME(OSC.TDQLIB.INTRA.OSC00001) - KILOBYTES (128,128) - VOLUMES (100000) - INDEXED KEYS (8,0) - RECORDSIZE (128,32760) )
以下は、上記のサンプル・スクリプトをユーザーが指定したUNIXファイルに保存した後、シェルでIDCAMSユーティリティを使用してTSAMデータセットを作成するスクリプトです。
$ IDCAMS < IDCAMS_OSC.TDQLIB.INTRA.sample
以下は、上記のIDCAMSユーティリティの使用例をidcamsツールで実行した例です。
$ idcams delete -t CL OSC.TDQLIB.INTRA.OSC00001
$ idcams define -t CL -n OSC.TDQLIB.INTRA.OSC00001 -o KS -k 8,0 -b 32768
-l 128,32760 -s 1024,128,128 -v 100000
4.2. TSQデータセットの作成
TSQデータセットは、キュー情報(Queue Information)を保存するためのデータセットとキュー・データ(Queue Data)を保存するためのデータセットを1つずつ作成します。
4.2.1. キュー情報TSQデータセット
キュー情報を保存するためのTSQデータセットは、以下のように設定する必要があります。
-
TSAMキー順データセット(KSDS)として作成します。
-
データセットのキー・サイズは16バイトです。
-
レコードは64バイト以上の固定長に指定します(可変長に指定しないでください)。
以下は、OSC.TSQLIB.INFO.OSC00001というキュー情報を保存するためのデータセットを作成するIDCAMSスクリプトです。最初の行は、同じ名前のデータセットが存在する場合は削除するように指示するコマンド文です。
DELETE OSC.TSQLIB.INFO.OSC00001 CLUSTER DEFINE CLUSTER (NAME(OSC.TSQLIB.INFO.OSC00001) - KILOBYTES (128,128) - VOLUMES (100000) - INDEXED KEYS (16,0) - RECORDSIZE (64,64) )
以下は、上記のサンプル・スクリプトをユーザーが指定したUNIXファイルに保存した後、シェルでIDCAMSユーティリティを使用してTSAMデータセットを作成するスクリプトです。
$ IDCAMS < IDCAMS_OSC.TSQLIB.INFO.sample
4.2.2. キュー・データTSQデータセット
キュー・データを保存するためのTSQデータセットは、以下のように設定する必要があります。
-
TSAMキー順データセット(KSDS)として作成します。
-
データセットのキー・サイズは18バイトです。
-
レコード長とレコード形式は、実際にTSQを使用する際に、作成するデータ長に合わせて直接定義します。
以下は、OSC.TSQLIB.DATA.OSC00001というキュー・データを保存するためのデータセットを作成するIDCAMSスクリプトです。最初の行は、同じ名前のデータセットが存在する場合は削除するように指示するコマンド文です。
DELETE OSC.TSQLIB.DATA.OSC00001 CLUSTER DEFINE CLUSTER (NAME(OSC.TSQLIB.DATA.OSC00001) - KILOBYTES (128,128) - VOLUMES (100000) - INDEXED KEYS (18,0) - RECORDSIZE (128,32760) )
以下は、上記のサンプル・スクリプトをユーザーが指定したUNIXファイルに保存した後、シェルでIDCAMSユーティリティを使用してTSAMデータセットを作成するスクリプトです。
$ IDCAMS < IDCAMS_OSC.TSQLIB.DATA.sample
以下は、上記の2つのIDCAMSユーティリティの使用例をidcamsツールで実行した例です。まずキュー情報を保存するためのデータセットを作成した後、キュー・データを保存するためのデータセットを作成しています。
$ idcams delete -t CL OSC.TSQLIB.INFO.OSC00001
$ idcams define -t CL -n OSC.TSQLIB.INFO.OSC00001 -o KS -k 16,0 -b 32768
-l 64,64 -s 1024,128,128 -v 100000
$ idcams delete -t CL OSC.TSQLIB.DATA.OSC00001
$ idcams define -t CL -n OSC.TSQLIB.DATA.OSC00001 -o KS -k 18,0 -b 32768
-l 128,32760 -s 1024,128,128 -v 100000
4.3. FILEデータセットの作成
FILEデータセットは、TDQデータセットやTSQデータセットとは異なり、ユーザーがFILEリソースを使用する場合に限って作成します。FILEリソースを使用するためには、システムが起動する前にFILEリソース定義のDSNAME項目に設定されているデータセットを作成する必要があります。リソース設定のOPENTIME(STARTUP)に指定されたファイルのデータセットを、ユーザーがシステムの起動前に作成していない場合、システムの起動時にエラーが発生します。
以下は、ファイル定義の例です。
DEFINE FILE(OSCFILE) GROUP(TEST) DSNAME(OSC.FILE) RECORDFORMAT(V) ADD(YES) BROWSE(YES) DELETE(YES) READ(YES) UPDATE(YES)
以下は、上記のように定義されたOSCFILEのためのデータセットを作成する例です。FILEリソース定義のDSNAMEに指定した名前を持つデータセットを定義するIDCAMS入力スクリプトを作成します。レコード長は最大1024バイトの可変長で、キーはレコードの先頭から64バイトのサイズを持つOSC.FILEを作成するスクリプトです。
DEFINE CLUSTER (NAME(OSC.FILE) - KILOBYTES (128,128) - VOLUMES (100000) - INDEXED KEYS (64,0) - RECORDSIZE (64,1024) ))
IDCAMSユーティリティを使用して、上記のサンプル・スクリプトでTSAMデータセットを作成します。
$ IDCAMS < IDCAMS_OSC.FILE.sample
以下は、上記のIDCAMSユーティリティの使用例をidcamsツールで実行した例です。
$ idcams define -t CL -n OSC.FILE -o KS -k 64,0 -b 32768
-l 64,1024 -s 1024,128,128 -v 100000
FILEリソースの詳細については、OpenFrame OSC『リソース定義ガイド』を参照してください。 |
5. アプリケーション・サーバー・リソースの登録
OSCは登録必須のリソース定義が記述されている基本マクロ・ファイルを提供しています。また、OSCが提供する多様な機能を使用するために必要なリソース定義が記述されているサンプル・マクロ・ファイルも提供しています。OSCの管理者は、リージョンに基本マクロ・ファイルを登録し、使用したい機能に応じてサンプル・マクロを修正して登録してください。
5.1. デフォルト・リソースの登録
基本マクロ・ファイルは、アプリケーション・サーバーの動作に必要なプログラムとトランザクションを定義しています。基本マクロ・ファイル(osc.dat)は、${OPENFRAME_HOME}/osc/resourceディレクトリに存在します。OSCのインストールによって提供されます。
基本マクロ・ファイルに定義されているリソースを登録するには、oscsdgenツールを使用してOSC SDテーブルに登録します。oscsdgenを使用してOSCリージョンを指定してリソースを登録することもできます。
以下は、oscsdgenツールを使用してOSCが提供する基本マクロ・ファイル(osc.dat)をOSC00001リージョンに登録する例です。
$ oscsdgen -c -r OSC00001 osc.dat
5.2. ユーザー・リソースの登録
サンプル・マクロ・ファイルには、OSCが提供する各種リソースが定義されています。サンプル・マクロ・ファイルは${OPENFRAME_HOME}/osc/resourceディレクトリに存在します。OSCと一緒に提供されるので、OSCをインストールすれば使用できます。リソースには、CONNECTION、FILE、JOURNALMODEL、PROGRAM、TDQ、TERMINAL、TRANCLASS、TRANSACTION、TSMODEL、TYPETERMの計10種類があります。
oscsdgenツールを使用してサンプル・マクロ・ファイルをOSC SDテーブルに登録します。また、OpenFrame Managerの[OSC] > [System Definition]メニューからリソース定義を追加・変更・削除することができます。
|
6. Tmax環境設定ファイルの設定
アプリケーション・サーバーとアプリケーション補助サーバー、また該当サーバーで使用するサービスをTmax環境設定ファイルに追加する必要があります。
6.1. アプリケーション・サーバーとサービスの登録
OSCアプリケーション・サーバーは、非対話型と対話型の2種類のサーバーがあります。1つのアプリケーション・サーバーを追加するには、両方のサーバーを登録する必要があります。アプリケーション・サーバーは、Tmax環境設定ファイルの[SERVER]セクションに登録します。
サーバーの登録情報は以下のとおりです。サーバー名以外のオプションは、Tmaxサーバーの登録方法と同じです。
サーバー | サーバー名 |
---|---|
非対話型アプリケーション・サーバー |
|
対話型アプリケーション・サーバー |
|
サービスの登録情報は以下のとおりです。サービス名は、サーバー名に接尾辞を追加して登録します。TRANCLASSサーバーの場合は、サーバー名と同じサービス名を登録します。
サービス | 接尾辞 | サービスが実行されるサーバー |
---|---|---|
一般トランザクションを処理するサービス |
なし |
TRANCLASSサーバー |
PLT機能を処理するサービス |
P |
PLTサーバー |
対話型トランザクションを処理するサービス |
C |
対話型サーバー |
DPLと関数移送を処理するサービス |
M |
対話型サーバー |
サービス名は対話型ではなく、非対話型アプリケーション・サーバー名(リージョン名)に接尾辞を追加して使用することに注意します。 |
各サービスの役割に応じてアプリケーション・サーバーの設定を変更して、トランザクション処理が効率的に行われるようにします。
以下は、OSC00001リージョンの非対話型サーバー(OSC00001_TCL0、OSC00001_TCL1、OSC00001)と対話型サーバー(OSC00001C)を登録し、該当サーバーにサービスを設定する例です。
*SERVER OSC00001_TCL0 SVGNAME = svgbiz, TARGET = OSC00001, MIN = 1, MAX = 1, SCHEDULE = FA, CLOPT = "-o $(SVR).out -e $(SVR).err" OSC00001_TCL1 SVGNAME = svgbiz, TARGET = OSC00001, MIN = 1, MAX = 1, SCHEDULE = FA, CLOPT = "-o $(SVR).out -e $(SVR).err" OSC00001 SVGNAME = svgbiz, MIN = 1, MAX = 1, SCHEDULE = FA, CLOPT = "-o $(SVR).out -e $(SVR).err -n" OSC00001C SVGNAME = svgbiz, TARGET = OSC00001, CONV = O, MAX = 1, SCHEDULE = FA, CLOPT = "-o $(SVR).out -e $(SVR).err" *SERVICE OSC00001_TCL0 SVRNAME = OSC00001_TCL0 OSC00001_TCL1 SVRNAME = OSC00001_TCL1 OSC00001P SVRNAME = OSC00001 OSC00001 SVRNAME = OSC00001 OSC00001M SVRNAME = OSC00001C OSC00001C SVRNAME = OSC00001C
6.2. アプリケーション補助サーバーとサービスの登録
アプリケーション補助サーバーは、アプリケーション・サーバーに追加的な機能を提供するために設定するサーバーです。
TDQログ機能を使用する場合に必要なOSC TDQログ・サーバーと、OpenFrame Managerの[OSC]メニューを使用するために必要なサーバーを追加することができます。
以下は、サーバー名を設定する方法です。
サーバー | サーバー名 |
---|---|
OSC TDQログ・ サーバー |
リージョン名+TL(例: OSC0001TL) |
OpenFrame Manager/OSCサーバー |
リージョン名+OMC(例: OSC00001OMC) |
以下は、アプリケーション補助サーバーを登録する例です。
*SERVER OSC0001TL SVGNAME = svgbiz, TARGET = osctlsvr, MAX = 1, SVRTYPE = UCS, CLOPT = "-o $(SVR).out -e $(SVR).err" OSC00001OMC SVGNAME = svgbiz, TARGET = oscossvr, MIN = 1, MAX = 5, SCHEDULE = RR, CLOPT = "-o $(SVR).out -e $(SVR).err -x OSCOSSVRSVC1:OSC00001_OMC1, OSCOSSVRSVC2:OSC00001_OMC2,OSCOSSVRMON:OSC00001_MON,OSCOSSVR_ST:OSC00001_ST"
各サーバーの実行バイナリ名は、TARGETオプションを使用してサーバー登録情報に設定します。各補助サーバーは、それぞれにサービスを登録する必要があります。
サーバー | サービスの指定 |
---|---|
OSC TDQログ・サーバー |
リージョン名に「_TL」を追加したサービスを登録します。 |
OpenFrame Manager/OSCサーバー |
リージョン名に「_OMC1」、「_OMC2」、「_MON」、「_ST」を追加した3つのサービスを登録します。OMCサーバーは、代表サービスが要求を処理する仕組みであるため、CLOPTオプションを使用して代表サービスをサーバー登録情報に設定します。 サービス「_OMC1」と「_OMC2」は、マルチノード環境で特定のノードにサービスを要求する場合とノードに関係なくサービスを要求する場合があります。サービス「_OMC1」は、要求を処理するノードが特定されたサービスのグループであり、マルチノード環境ではROUTINGセクションを追加して、FB_NODENAMEフィールドを設定することで特定のノードにサービスを要求することができます。 |
以下は、アプリケーション補助サーバーのサービスを登録する例です。
*SERVICE OSC00001_TL SVRNAME = OSC00001TL OSC00001_OMC1 SVRNAME = OSC00001OMC OSC00001_OMC2 SVRNAME = OSC00001OMC OSC00001_MON SVRNAME = OSC00001OMC OSC00001_ST SVRNAME = OSC00001OMC