IBM i SQLでパラメータ初期値を変更したコマンドを検索するには?
Question
CHGCMDDFTにて、コマンドのパラメータ初期値を変更したコマンドを確認する方法はありますでしょうか?
Answer
CHGCMDDFTでパラメータ初期値を変更すると、コマンドオブジェクトの項目APAR_IDに値「CHGDFT」が追加されます。
DSPOBJD OBJ(QSYS/*ALL) OBJTYPE(*CMD) OUTPUT(*OUTFILE) にてファイルを作成して、APAR_ID部分を確認することも出来ますが、「OBJECT_STATISTICS テーブル関数」を使用するとSQLでもっと簡単に確認する事ができます。
「OBJECT_STATISTICS テーブル関数」
https://www.ibm.com/docs/ja/i/7.5.0?topic=services-object-statistics-table-function
※このビューを使用する為の前提グループPTFレベル(OS毎のグループPTF DB2 for IBM i レベル)
| V7.4 | SF99704 level 13 |
| V7.3 | SF99703 level 24 |
SQL例
SELECT * FROM TABLE(QSYS2.OBJECT_STATISTICS('QSYS', '*CMD'))
WHERE APAR_ID = 'CHGDFT';
パラメータ初期値を変更したコマンドが一覧で表示されます。
コマンドのどのパラメータ値を変更したかは、監査ジャーナルを設定している場合は調査可能ですが、監査ジャーナルが無い場合はどのパラメータを変更したかは記録されません。
また、CHGCMDDFT で何らかのパラメータを変更し、その後、元に戻しても CHGCMD のフラグはそのままです。
元の空白には戻りません。
それ以外の方法で確認する場合は、コマンドそれぞれのパラメータ値をヘルプ(F1)で表示し、下線が引いてあるパラメータ値が初期値になりますので、現在の値と初期値の値を比較します。
この例では、SAVLIBコマンドの「データ圧縮」を初期値*DEVから*ZLIBへ変更しています。
または、V7.5であれば1つ前のリリース・ライブラリー QSYSV7R4M0 が存在しているので、そのライブラリー内のコマンドと比較する方法になります。
例:QSYSV7R4M0/SAVLIB → F4にて表示
「OBJECT_STATISTICS テーブル関数」は、SQLにてオブジェクト情報を表示しますので、例えばライブラリー内のオブジェクト情報を一覧で表示する事も可能です。
※SQL例:ライブラリー BELLTEST内のファイル(*FILE)一覧を表示します。
SELECT
OBJNAME, OBJTYPE, OBJOWNER, OBJCREATED, OBJSIZE, OBJTEXT, DAYS_USED_COUNT
FROM TABLE (QSYS2.OBJECT_STATISTICS('BELLTEST ','FILE') ) AS X
※SQL例:ライブラリー BELLTEST内のオブジェクト一覧を表示します。
SELECT
OBJNAME, OBJTYPE, OBJOWNER, OBJCREATED, OBJSIZE, OBJTEXT, DAYS_USED_COUNT
FROM TABLE (QSYS2.OBJECT_STATISTICS('BELLTEST ','ALL') ) AS X
システムリプレイスなどを行う場合、QSYSやライセンス関連のコマンドは初期値に戻ってしまいます。もし変更して運用されている場合、どのコマンドがカスタマイズされているのか事前に確認しておくことができますので、ぜひご利用してみてください。
by . あすと
