フルバックアップ取得時に保管できないオブジェクトを 事前に確認したい(保管属性(ALWSAV)について)
Question
定期的にフルバックアップを取得していますが、SAVコマンド実行中にエラーとなり、保管できないオブジェクトが存在する時があります。
メッセージへは'G'で応答し、保管処理が完了した後に、ジョブログを確認すると、
メッセージ CPD37C3 が出ており、保管できなかったオブジェクトを特定できますが、フルバックアップ取得する前に、保管属性(ALWSAV)が*NOに設定されているオブジェクトを 確認する方法はありませんでしょうか。
Answer
IBM i V5R4M0以降で、保管属性(ALWSAV)が*NOに設定されているオブジェクトを確認する事ができます。
ディレクトリー情報の検索 (RTVDIRINF) コマンドを実行します。
今回例では、ディレクトリー /tmp 内を確認します。
コマンド例: RTVDIRINF DIR('/tmp') INFLIB(QUSRSYS)
このコマンドを実行すると、ライブラリーQUSRSYS内に、2つのファイルが作成されます。
ファイル名は、QAEZDで始まりその後に4桁の数字が続きます。(最後に、D と Oが付きます)
例 | |
QAEZD0001D | ディレクトリー情報を含みます |
QAEZD0001O | ディレクトリー内のオブジェクトに関する情報を含みます |
※作成されたファイル名は、コマンドを実行直後のメッセージ CPI1E30 をご確認ください。
作成されたファイルから、保管属性(ALWSAV)が*NOのオブジェクトが確認できます。
※この例では、STRSQLにて確認いたします。
STRSQL を実行し、
SELECT T01.QEZNONSAV, T01.QEZOBJNAM, T02.QEZDIRNAM1 FROM QUSRSYS/QAEZD0001O T01, QUSRSYS/QAEZD0001D T02 WHERE T01.QEZDIRIDX = T02.QEZDIRIDX AND QEZNONSAV = '1'
を実行します。
→ QEZNONSAV(Object can be saved or not)の値が 1 の場合に、保管属性(ALWSAV)が*NOになっています。
この例では、ディレクトリー /tmp 内の、ScanOutput.txt と ActiveJobs.txt が、保管属性(ALWSAV)が*NOになっています。
このオブジェクトを WRKLNK コマンド → 「8=属性の表示」で確認すると、
「保管可能」がNOになっているのが確認できます。
もし、「保管可能」を*YESへ変更する場合には、属性変更 (CHGATR)コマンドを使用します。
※WRKLNKコマンドを実行し、対象オブジェクトのOPTへ 「13=属性の変更」にて変更できます。
このように、フルバックアップ取得前に、「保管可能」がNOのオブジェクトを確認し、必要に応じて属性を*YESへ変更しておけば、フルバックアップ取得時にエラーが出なくなります。
特にシステムが一時的に使用するディレクトリー /tmp などは、フルバックアップ取得前に確認したほうがいいかもしれません。
※注意点
- ルート(/)ディレクトリーまたは、大きいディレクトリーに対してこれを実行すると、時間がかかり、ファイルがロックされる可能性があります。
- RTVDIRINFコマンドを実行する度に、ファイル QAEZD(数字)が作成されますので、必要に応じて削除する事をお勧めいたします。
→ 全てのファイル QAEZD(数字)を削除しても、RTVDIRINFコマンド実行時に再作成されますので、問題ございません。
※ご参考サイト
- 提供されるディレクトリー
https://www.ibm.com/docs/ja/i/7.4?topic=directory-provided-directories - ディレクトリー情報の検索(RTVDIRINF)
https://www.ibm.com/docs/ja/i/7.4?topic=ssw_ibm_i_74/cl/rtvdirinf.htm - RTVDIRINF および PRTDIRINF コマンドの出力の処理
https://www.ibm.com/docs/ja/i/7.4?topic=commands-working-output-rtvdirinf-prtdirinf
by あすと