このIBM i (Db2 for i)に対するDRDA、DDM、Db2 Mirror の接続1つに対して1行を返します。
概要
■表関数名:QSYS2.ACTIVE_DB_CONNECTIONS
■カテゴリ:通信サービス
■サポート:IBM i 7.3 SF99703 Level 16以降 その後2回拡張
■参照URL(IBM i 7.5):https://www.ibm.com/docs/ja/i/7.5?topic=services-active-db-connections-table-function
実行例
SELECT * FROM TABLE (QSYS2.ACTIVE_DB_CONNECTIONS('900239/DBADMIN/QPADEV000F'));
※上記はマニュアル記載のサンプルです。QPADEV000Fという5250端末, ユーザーID DBADMIN、ジョブ番号900239 のジョブが実行しているDDM, DRDA, Db2 Mirror の通信ジョブ毎に1行を返します。
DDM, DRDA ってなに?
DDMは昔からよく使われているIBM i OS同士でリモートのDb2 for i のテーブル・ビューをローカルのテーブル・ビューのように見せるためのオブジェクトです。ローカルにCRTDDMFコマンドでタイプ*FILE 属性DDMFのテーブルを作成すると、ローカルのプログラム等(RPG,COBOL,Java,OSS,CLP,etc.)からDDMFを指定して、リモートのDb2 for i をアクセスできます。
・・・ですが、JavaなどODBC/JDBC等が利用できる言語ではそもそもローカル・リモートの区別は普通しないのでRPG,COBOL,CLPなど上記を使わない言語からもっぱら使われます。
DRDAは Distributed Relational Database Architecture の略で、主にDb2ファミリー間(OSは問わない異機種間接続を想定)のデータベース通信、連携技術です。
参照:https://www.ibm.com/docs/ja/informix-servers/12.10?topic=communications-overview-drda
DDMFの作成例
サンプルの全体像です。
以下のようなコマンドで作成します。
CRTDDMF FILE(GOMALIB/TOKMSP75) RMTFILE(DEMOLIB/TOKMSP) RMTLOCNAME(IBMI75 *IP)
この例ではIBMI74システム上にリモートのIBMI75のスキーマ:DEMOLIB、テーブル:TOKMSPをアクセスできるDDMファイル:TOKMSP75が作成されます。
DDMジョブを開始してみる。
色々やり方はありますがここでは、IBMI74システムのACS SQLスクリプト実行画面から上記のDDMファイルをSELECT してみます。
SELECT * FROM GOMALIB.TOKMSP75 ;
実行結果は…
エラーになりました…T T)
おっと忘れてしました、DDMFはSQL,QUERY/400では使えませんでした・・・(^^;
では別な方法でDDMFをアクセスしてみましょう。
単純な方法として、DFUでリモートのPFを更新モードでオープンしてみます。
以下のファイルの実体は
リモートシステム:IBMI75
ファイル DEMOLIB/TOKMSP です。
下記の例のようにリモートのファイルを更新モードで開けばDDMセッションがアクティブになるはずです。
ここで、実行している5250画面のジョブ番号/ユーザー名/端末名を調べて、ACS SQL実行から実行します。
実行例です。
SELECT * FROM TABLE (QSYS2.ACTIVE_DB_CONNECTIONS('633699/GOMA/QPADEV0007'));
この後のカラムには、クライアントIPアドレス、ホストIPアドレス、リモートのIBM i OSバージョンなどが返されています。
QA
Q1.
タイプの FILE には アスタリスク (*) が付くけど、属性の DDMF には付かなかったりするでしょうか?
A.
下記の例のようにDDMFは*FILEタイプオブジェクトのなかの1つの属性となります。*FILEタイプオブジェクトの別な属性の種類としては、PF-DATA(テーブル、物理ファイル)、SAVF(保管ファイル)、などがあります。
属性には*は付けないのが慣例的な表現法です。