DB2 for OS/390 as DRDA Application Requester / Server using SNA

DB2 for OS/390 as an Application Requester

DB2の分散データベースサポートには、次の2種類がある:

System-directed access
DB2 for OS/390同士が通信する場合には、DRDAをバイパスして接続が確立される。
Application-directed access
DRDAを用いて、DB2 for OS/390が他のサーバと接続する。ARがDB2 for MVS/ESA V2R3の場合には、同時に一台のASにしか接続できないが、それ以降のバージョンでは同時に複数のASに接続することができる。

DB2 for OS/390をARとして設定するためには、次のような手順が必要となる:

VTAM Resourceの編集

VTAM APPL で設定できる項目には、以下のようなものがある。

相手先LU名
NETIDの部分は指定せず、LUNAMEの部分のみ指定する。APPL名と同じになる。
AUTOSES
コネクション確立時などに立ちあがるセッション数。ゼロ以外を指定する。DMILWNLまではリクエストに応じてセッションは追加されていく。
DSESLIM
立ちあがるセッション数(contention winner/loser 共に)の最大値。この設定は、SYSIBM.LUMODESの値で上書きされる。
EAS
全コネクションを通したセッションの合計予想値
MODETAB
DB2 for OS/390のMODENAME(つまりIBMRDB)が格納されている VTAM MODE テーブル名
PRTCT
DB2 for OS/390がVTAMを使用するためのパスワード。
SECACPT(=ALREADYV)
SNAが使用するセキュリティレベルを設定する。ALREADYVを指定すると、次のSECURITYキーワードでセキュリティレベルを選択できるようになる
SECURITY=(PGM|SAME|NONE)
PGMはID/PASSWORDが、SAMEはIDのみが、NONEは何もアカウント情報が送られてこないことを意味する。DB2 for OS/390はNONEの接続要求を許可しない。推奨値はPGM。
VERIFY=(NONE|OPTIONAL|REQUIED)
SNAセッションのセキュリティを設定する。
SYNCLVL=SYNCPT
DB2 for OS/390が2層コミットを行えるようにする。
ATNLOSS=ALL
DB2 for OS/390に対し、VTAMセッションの終了を通知し、適切な同期処理が行えるようにする。

CDBに項目を追加

ここまでに登録した情報をDB2から使用できるようにするため、CDBに項目を追加する。

INSERT INTO SYSIBM.LOCATIONS(LOCATION, LINKNAME, TPN)
  VALUES(location,linkname,tpn);
INSERT INTO SYSIBM.LUNAMES(LUNAME, MODESELECT, 
            SYSMODENAME, SECURITY_OUT, USERNAMES)
  VALUES(luname,mode,sysmodename,
         security,username);
INSERT INTO SYSIBM.USERNAMES(TYPE, LINKNAME, 
            AUTHID, NEWAUTHID, PASSWORD)
    VALUES(type,linkname,id-at-AR,
           id-at-AS,password);
SYSIBM.LOCATIONS.LOCATION
CONNECT文で使用される名称
SYSIBM.LOCATIONS.LINKNAME
リンク先の名称。これは、SYSIBM.IPNAMES→SYSIBM.LUNAMESの順番で検索される
SYSIBM.LOCATIONS.TPN
TP名。空白だとX'07'6DBが使用される。DB2 UDBのデフォルト値はDB2DRDA
SYSIBM.LUNAMES.LUNAME
SYSIBM.LOCATIONS.LINKNAMEに対応するLU名
SYSIBM.LUNAMES.MODESELECT
'Y'であれば、現状のUSERIDとアクセスプランを元にSYSIBM.MODESELECTテーブルを検索してそこからモードを取得する。そうでなければ、同一レコード中のSYSMODENAMEフィールドが使用される。
SYSIBM.LUNAMES.SECURITY_OUT
'A'であれば、ユーザはOS/390上で認証済みであることを意味する。相手先では、クライアント認証を許可する設定が必要(DB2 UDBであればAUTHENTICATION=CLIENT。)
'P'であれば、IDとPASSWORDが共に接続先に送られることを意味する。この場合、USERNAMESフィールドには、接続ID変換設定を意味する'O'がセットされていなければならない。
SYSIBM.LUMODES.CONVLIMIT
VTAM Resourceで設定したセッション最大数を上書きする。
SYSIBM.USERNAMES.TYPE
接続ID変換設定を意味する'O'をセットする。
SYSIBM.USERNAMES.LINKNAME
リンク先の名称。
SYSIBM.USERNAMES.AUTHID
AR側でのUSERID。指定されていない場合には、明示的に指定された以外のすべてのUSERIDを対象とする。
SYSIBM.USERNAMES.NEWAUTHID, SYSIBM.USERNAMES.PASSWORD
AS側に送られるUSERID/PASSWORD

パッケージのバインド

DB2 for OS/390では、パッケージは自動的にはサーバにバインドされないため、BIND PACKAGEパネルを用いて設定を行う必要がある。設定する項目は次のようなものである:

パラメータ
LOCATION NAME設定したLOCATION
COLLECTION-IDバインドするパッケージの名称
ACTION ON PACKAGEADDかREPLACEか
CHANGE CURRENT DEFAULTSYES
ISOLATION LEVEL適切な値
SQLERROR PROCESSINGNOPACKAGE

DB2 for OS/390 as an Application Server

DB2 for OS/390をASとして設定するためには、次のような手順が必要となる:

このうち、CDBへの項目追加以外は、AR設定と同一の作業である。

CDBに項目を追加

ASとしての動作にかかわる追加は、以下のようなSQL文を用いて行う。

INSERT INTO SYSIBM.LUNAMES
            (LUNAME, SECURITY_IN, USERNAMES)
    VALUES(luname,security,
           username);
INSERT INTO SYSIBM.USERNAMES
            (TYPE, LINKNAME, AUTHID, NEWAUTHID)
    VALUES(type,linkname,
           id-at-AR,id-at-AS);
SYSIBM.LUNAMES.LUNAME
SYSIBM.LOCATIONS.LINKNAMEに対応するLU名
SYSIBM.LUNAMES.SECURITY_IN
'A'であれば、ユーザは相手先システムで上で認証済みであることを意味する(DB2 UDBのAUTHENTICATION=CLIENTに相当)。
'V'であれば、IDとPASSWORDを共に受け取る必要があることを意味する。
SYSIBM.LUNAMES.USERNAMES
'I'がセットされていた場合、SYSIBM.USERNAMESテーブルを元に接続ユーザの変換が行われる。
SYSIBM.USERNAMES.TYPE
'I'の場合、ASとしてのユーザ定義変換であることを意味する。
SYSIBM.USERNAMES.LINKNAME
リンク先の名称。
SYSIBM.USERNAMES.AUTHID
AR側でのUSERID。指定されていない場合には、明示的に指定された以外のすべてのUSERIDを対象とする。
SYSIBM.USERNAMES.NEWAUTHID, SYSIBM.USERNAMES.PASSWORD
AS側に送られるUSERID/PASSWORD