Db2 for i サービスとIBM iサービスの機能拡張

Db2 for i サービスの機能拡張

 Db2 for i サービスも継続的に機能拡張されている。その目的は大多数のユーザーで必要となる機能やプログラムサンプルを標準提供し、生産性向上や属人性を排除することにある。

 Db2 for i サービスはすべてSQLを介した操作を前提としており、IBM i に精通していないオープン系ユーザーがIBM i を操作するためのツールでもある。

 IBM i 7.4 TR3、および7.3 TR9レベルでのDb2 for iサービス一覧は図表1のとおりである。

図表1 Db2 for iサービスの一覧

 

 以下に、Db2 for i サービスの特徴的な機能を紹介する。

QSYS2.PARSE_STATEMENT UDTF

 Db2 for i サービスとして提供されるUDTF(ユーザー定義表関数)の1つ。

 指定したライブラリー内のIBM i オブジェクトについて、DDL、DML、DCLなど何らかのSQL操作が行われるオブジェクトとカラム名のリストを返す。

 一例として、以下のステートメントを実行すると、指定ライブラリー内にてSQLで使用される(SQL文で使われている)テーブル名とステートメントの一覧を入手できる。

 IBM i 7.4 SF99704 Level1でDROPステートメントのサポート、CREATE TABLE、ALTER TABLEでの参照制約のサポート等が追加された。

参考URL:https://supportcontent.ibm.com/support/pages/node/1116561 (参照にはIBM ID登録が必要)

RELATED_OBJECTS

 IBM i 7.4 TR3、および7.3 TR9で拡張された、SYSTOOLSで提供される表関数。DSPDBRコマンドと似ている。指定した物理ファイルに関連するオブジェクトを一覧表示で返す。

【使用例】下記コマンドを実行すると図表2の結果を返す。

 

図表2 RELATED_OBJECTSの結果例
ANALYZE_CATALOG

 同じくIBM i 7.4 TR3および7.3 TR9で拡張された、SYSTOOLSで提供される表関数。RCLDBXREF *CHKコマンドを拡張したような機能である。

【使用例1】すべてのライブラリーについて、クロスリファレンステーブルのエラーを表示する。

 特定ライブラリーについて検査したい場合は、library_nameにライブラリー名を指定する。

【使用例2】データベース相互参照サーバーの実行状態を返す。DESCRIPTION列とDETAIL列に処理待機しているキュー内のエントリの数を示す。

 

IBM i サービスの機能拡張

 以上はデータベース機能そのものの拡張であるが、OS機能についても従来のCLコマンドやAPIを代替するIBM i サービスが拡充中である。その目的はDb2 for iサービスと同様に、IBM i 固有のコマンドやAPIを排し、最も普及している業界標準の(開発者人口が最も多い)SQLで代替することである(図表3)。

図表3 IBM iサービスの拡張

 

 IBM i サービスは現在、合計14のカテゴリに分類され提供されている。今回はIBM i 7.4 TR3、および7.3 TR9で拡張された機能を中心に紹介する。

 IBM i 7.4 TR3、および7.3 TR9レベルでのIBM i (SQL)サービス一覧は、図表4のとおりである。

図表4 IBM iサービスの一覧

 

 

PTFサービス
systools.group_ptf_currency

 IBM i に導入済みのPTFレベルとIBM PSPサイトの最新PTF情報を比較して、導入可能な更新PTFグループを表示する。

 ちなみにグループPTFの最新情報は下記から参照できる。

IBM Support:IBM i Group PTFs with level
http://www.ibm.com/support/docview.wss?uid=nas4PSPbyNum&aid=1

 区画にインストール済みのグループPTFバージョンとPSPサイトの最新バージョンを比較して、結果をリスト表示する(図表5)。

図表5 systools.group_ptf_currencyによる結果例

 

  サンプルはPSPサイトに接続できない環境のため、PTF_GROUP_CURRENCYカラムに‘PSP INFORMATION NOT AVAILABLE’と表示されている。

 インストール可能な更新バージョンがある場合は‘UPDATE AVAILABLE’など、比較結果がリストされる。

 以下は、更新バージョンがある行だけを抽出するサンプルである。

 

 結果例は、図表6のようになる。

図表6 更新バージョンがある行だけを抽出する結果例

 

スプールサービス
SYSTOOLS.DELETE_OLD_SPOOLED_FILES プロシージャー

 読んで字のごとく、古いスプールファイルを検索して削除するプロシージャーサンプルである。

【使用例】PRT01 OUTQについて、30日以上前のスプールのリストを表示する。PREVIEW YESを指定しているので、削除はしない。OUTQ名を指定しないと、全OUTQが対象となる。

 

 上記の例からPREVIEWをNOに変更すると、合致するスプールを削除する。


 
 このプロシージャーは日数、OUTQ、ライブラリー、ユーザーで対象をフィルタできる(図表7)。

図表7 SYSTOOLS.DELETE_OLD_SPOOLED_FILES プロシージャーの結果例

 

ジャーナルサービス
QSYS2.DISPLAY_JOURNAL ユーザー定義表関数

 DSPJRNコマンドと同様の検索を実行する。DSPJRNコマンドでは、たとえばIBM i外部のプログラムからジャーナルの項目を検索するには、簡単なプログラミングが必要であった。

 DISPLAY_JOURNAL を利用すれば、プログラミングレスでSQLにより直接ジャーナルを処理できる。また、ジャーナル項目の検索速度が速いこともメリットである。

 通常のデータベースジャーナルのほか、監査ジャーナル(QSYS/QAUDJRN)も検索できる。

【使用例1】監査ジャーナルからパスワード失敗に関する監査情報を取得する(図表8

 

図表8 監査ジャーナルからパスワード失敗に関する監査情報を取得

 
 以下のサンプルコードは、IBM i Information Centerからの転載である。同センターには、これ以外のIBM iサービス、Db2 for i サービスについても同様のサンプルが多数掲載されている。

【使用例2】ジャーナル TESTLIB/QSQJRN の *CURRENT レシーバーからすべての項目を表示する

【使用例3】PRODDATA/SALES テーブルに対して 、SUPERUSER により実行されたすべての変更を表示する

【使用例4】MYCO ライブラリー内の REQUESTS ファイルの監査ジャーナル項目を確認する

【使用例5】ジャーナル ID (JID) が異なるものも含め、MYCO ライブラリー内の REQUESTS ファイルにおける過去 1 時間のすべての変更を確認する

 
IFSサービス
QSYS2.IFS_READ ユーザー定義表関数

 IFSのファイルをREADして、結果を表示する。ファイル内の行の区切りはCR、CRLF、LF、LFCRまたはANYで指定できる。キャラクタまたはUTF-8で読み取る。

【使用例1】/annotate.logを読み取り、表示する(図表9

 

図表9 QSYS2.IFS_READの結果例

【使用例2】/usr/file2を読み取り、表示する。ファイルサイズ2GBで改行表示する

IFSサービス
QSYS2.IFS_WRITE ユーザー定義表関数

 IFSストリームファイルにデータを書き込む。追加・置換・作成を実行できる。文字はキャラクタ、UTF-8、バイナリが指定できる。

【使用例1】/tmp/newfile1に1行書き込む。置換モードで書き込む

【使用例2】/tmp/library_name にすべてのライブラリー名を調べて書き出す。書き出すファイルは、JOBのCCSIDに準拠する(以下はIBM Knowledge Centerからの転載である)

 上記で生成した /tmp/library_names は、下記のようにIFS_READ UDTFで読み取りできる。

【使用例3】UTF-8(CCSID 1208)のストリームファイルを生成する

IFSサービス
QSYS2.IFS_OBJECT_STATISTICS−UDTF

 指定IFSディレクトリについて、条件に合致したオブジェクトリストを表示する(図表10)。サブツリーも検索する。オブジェクトタイプは、 *ALLSTMFを指定する。

 

図表10 QSYS2.IFS_OBJECT_STATISTICS – UDTFの結果例

 


著者
佐々木 幹雄氏

日本アイ・ビー・エム株式会社
パワーシステムテクニカルセールス
シニアITスペシャリスト


AS/400利用のお客様担当SEから出発し、さまざまなテクニカル職種を担当。現在はPower Systemsはじめインフラ提案・アーキテクチャ設計を主に担当している。

 

 

[i Magazine 2021 Winter(2021年1月)掲載]


 

特集|Db2 for i 最新Tips~多彩な角度からDb2 for iの高度活用にアプローチする
 
PART 1  Db2 for i の歴史と拡張の方向性
PART 2 Db2 for i サービスとIBM i サービスの機能拡張
PART 3 IBM i Access Client Solutions(ACS)のDb2 for i 関連機能
PART 4 Db2 for iの日常運用を見直す
PART 5 Node.js on IBM iのDb2 for i 関連機能
PART 6 Db2 Mirror for iの概要と運用時の考慮点
Column  SQLサンプルの活用法(IFSオブジェクトの管理)
関連リンク

More Posts