サポートチーム便り2023.01.11
ACSでSQLを便利に使おう - IFSの情報(サイズなど)をEXCELへ纏めたい -
Question
ディスク使用率が多くなってきたので PRTDSKINFで確認したらIFS領域の使用率が多い事が分かりました。
IFS領域内のディレクトリーやオブジェクトのサイズの情報をPRTDIRINFで確認できるのは分かるのですが、EXCELに纏めたい(変換したい)と思っています。
何かよい方法はありませんでしょうか。
Answer
IFS領域内のディレクトリーやオブジェクトサイズをEXCELに纏める事は下記手順で可能です。
- IFS領域の情報を収集
- 収集した情報をSQLで取得
- SQLで取得した内容をEXCELへ変換
IFS領域の情報を収集
RTVDIRINF (ディレクトリー情報の検索) コマンドを実行します。
コマンド例
RTVDIRINF DIR(/) INFFILEPFX(QRYIFS) INFLIB(QGPL) OMIT('/qsys.lib' '/qntc' '/qfilesvr.400' '/qopt')
- システム提供(QSYSなど)のディレクトリーは、OMIT(除外)します。
- 完了するまでに時間がかかるため、バッチ(SBMJOB)で実行する事をお勧めいたします。
- この例では、ライブラリーQGPL内にファイルQRYIFSOとQRYIFSDが作成されます。
- ファイルQRYIFSOとQRYIFSDは上書きされませんので、実行前に削除(DLTF)してください。
- ファイルQRYIFSOとQRYIFSDの内容は、下記になります。
QRYIFSD ディレクトリー情報を含みます。 QRYIFSO ディレクトリー内のオブジェクトに関する情報を含みます。 - 取得した情報をSQLで取得
- SQLを実行する時には、ACSのメニューから「SQL スクリプトの実行」にて実行してください。
実行するSQLの例は下記になります。
--- 各ディレクトリ・サイズを降順に取得します --- Select (Sum (O.QEZALCSIZE) / 1048576) As Directory_Size_In_MB, D.QEZDIRNAM1 As Directory_Path From QGPL.QRYIFSD D Join QGPL.QRYIFSO O On D.QEZDIRIDX = O.QEZDIRIDX Group By D.QEZDIRIDX, QEZDIRNAM1 Order By 1 Desc, 2;
--- オブジェクトサイズを降順に取得します --- Select Case D.QEZDIRNAM1 When '/' Then D.QEZDIRNAM1 Else D.QEZDIRNAM1 || '/' || QEZOBJNAM End As "Object", QEZOBJTYPE As "Object Type", QEZALCSIZE As "Allocated Size" From QGPL.QRYIFSO O, QGPL.QRYIFSD D Where O.QEZDIRIDX = D.QEZDIRIDX Order By QEZALCSIZE Desc;
- SQLで取得した内容をEXCELへ変換
ACSのSQL実行結果をEXCELへ変換する手順は、下記サイトをご参照ください。
「ACSのSQL実行結果をダウンロードしたい」
https://www.e-bellnet.com/category/technology/2212/2212-02.htmlSQLを実行します。
EXCELへ変換します。
※ご参考サイト:
「Retrieving Information About Objects In the IFS」
https://www.ibm.com/support/pages/node/725583
「ディレクトリー情報の検索(RTVDIRINF)」
https://www.ibm.com/docs/ja/i/7.5?topic=ssw_ibm_i_75/cl/rtvdirinf.html
「RTVDIRINF および PRTDIRINF コマンドの出力の処理」
https://www.ibm.com/docs/ja/i/7.5?topic=commands-working-output-rtvdirinf-prtdirinf
by あすと