AS400 / IBM i の本番作業では、修正前やデータリカバリー前に保存・退避を取ることがあります。代表的なのが SAVLIB、SAVOBJ、SAVF です。どれも便利ですが、本番環境で使う時はかなり注意が必要です。特に怖いのは、保存対象をロックしてしまい、本番アプリケーションに影響を出すことです。
このページでは、AS400の保存・退避系コマンドを本番で使う前に見ることを、現場目線で整理します。単に「保存するコマンドです」という説明ではなく、ロック、保存先、SAVF名、DSPSAVFでの確認、復元確認まで含めてまとめます。
現場目線の結論 本番でSAVLIBやSAVOBJを使う時は、保存対象をロックしないことが鉄則です。ロックをかけた状態で本番DBを保管すると、アプリケーションがファイルを使えなくなり、アベンドが多発する可能性があります。保存した後は、SAVFの中身を確認し、必要ならRST系コマンドで復元できることまで確認します。
SAVLIBとは
SAVLIB は、指定したライブラリを丸ごと保管するコマンドです。ライブラリ単位で退避を取りたい時に使います。本番作業前に、対象ライブラリ全体を保存しておきたい場合などに使われます。
SAVLIB LIB(TESTLIB) DEV(*SAVF) SAVF(BKUPLIB/TESTLIBSAV)
ライブラリ丸ごとを保存できるため便利ですが、対象が大きくなりやすく、保存時間やロックの影響にも注意が必要です。本番で使う場合は、対象ライブラリが本当に正しいか、保存先SAVFが正しいか、ロックの指定がどうなっているかを必ず確認します。
SAVOBJとは
SAVOBJ は、ライブラリ内のオブジェクトを選択して保管するコマンドです。ライブラリ全体ではなく、特定のファイル、プログラム、オブジェクトだけ退避したい時に使います。修正対象のプログラムだけ保存する、特定ファイルだけ作業前退避する、といった使い方です。
SAVOBJ OBJ(TEST001R TESTFILE) LIB(TESTLIB) DEV(*SAVF) SAVF(BKUPLIB/TESTSAV)
対象を絞れるため使いやすいですが、オブジェクト名やライブラリ名を間違えると、保存されるべきものが保存されません。これは論外です。本番作業前の退避なら、対象オブジェクト、対象ライブラリ、保存先をF4画面で確認します。
SAVFとは
SAVF は、AS400の保管用ファイルです。イメージとしてはZIPファイルに近いです。たとえばAとBのファイルを保管すると、1つのSAVFにまとめて保管されます。SAVLIBやSAVOBJの保存先として使うことが多いです。
CRTSAVF FILE(BKUPLIB/TESTSAV) SAVOBJ OBJ(TEST001R) LIB(TESTLIB) DEV(*SAVF) SAVF(BKUPLIB/TESTSAV)
SAVFは便利ですが、保存先を間違えると他の人の退避ファイルを上書きしてしまう可能性があります。SAVF名、保存先ライブラリ、作業日、対象システムが分かる命名にして、既存SAVFを使い回す時は特に注意します。
SAVCHGOBJはどう扱うか
SAVCHGOBJ は変更されたオブジェクトを保存するコマンドですが、自分は現場で使ったことがありません。この記事では、実務でよく使う SAVLIB、SAVOBJ、SAVF を中心に扱います。使ったことがないコマンドを、分かったふりで本番作業に使うのは危険です。
本番で一番怖いのはロックをかけること
本番で保存前に必ず確認するのは、ファイルをロックして保管処理をしないことです。活動状態保管の指定、つまり SAVACT の扱いが重要です。ロックをかけないオプションを選択することが鉄則です。
なぜ怖いかというと、ロックをかけてしまうとファイルを使うことができなくなるためです。本番DBをロックしてSAVLIBした場合、本番アプリケーションが対象ファイルを使えず、アベンドが多発する可能性があります。これはかなり怖いオプションです。
| 確認項目 | 見る理由 |
|---|---|
| SAVACTの指定 | 保存中に本番ファイルをロックしないため |
| 対象ライブラリ | 本番/テスト、対象環境を間違えないため |
| 対象オブジェクト | 保存すべきものが保存されているか確認するため |
| 保存先SAVF | 他人のSAVFを上書きしないため |
| 実行時間帯 | 利用者やバッチ処理への影響を避けるため |
若手が保存系コマンドでやりがちな危ないミスも、このロックです。保存すること自体に意識が向きすぎて、保存中に本番アプリが対象ファイルを使えなくなることを見落とします。本番でSAV系コマンドを実行する時は、F4で必ず指定内容を確認します。
F4画面で必ず確認する
SAV系コマンドでは、必ずF4画面で確認します。コマンドを直接打って実行キーを押すのではなく、F4でパラメータを開き、対象ライブラリ、対象オブジェクト、保存先SAVF、SAVACT、出力先などを確認します。
- 保存対象のライブラリは正しいか
- 保存対象のオブジェクトは正しいか
- 保存先のライブラリとSAVF名は正しいか
- 既存SAVFを上書きしないか
- SAVACTの指定で本番ファイルをロックしないか
- 実行タイミングが本番業務に影響しないか
対象ライブラリを間違えると、保存されるべきものが保存されません。保存先SAVFを間違えると、他の人のファイルを上書きしてしまうこともあります。どちらも本番作業では許されないミスです。
保存しただけで安心しない
保存しただけで安心してはいけません。SAVFが壊れている可能性もありますし、対象オブジェクトが入っていない可能性もあります。保存後は、SAVFを開いて中身があることを確認します。現場では5番で開いて確認する、または DSPSAVF で確認します。
DSPSAVF FILE(BKUPLIB/TESTSAV)
もっと確実に見るなら、RST系コマンドで検証用ライブラリへ復元して確認します。保存は「取ったつもり」では意味がありません。戻せること、必要なオブジェクトが入っていることまで見て、はじめて退避として使えます。
データリカバリー前の退避として使う場合
本番トラブルでデータリカバリーする前に、対象ファイルをSAVFへ退避することがあります。この時も、対象ファイル、対象ライブラリ、保存先、ロック指定を確認します。SQL修正前の退避なら、更新前の状態に戻せることが重要です。
ただし、退避を取ることで本番アプリに影響を出してはいけません。特に販売管理システムでは、受注、出荷、在庫、売上、外部I/Fなどが動いているため、ファイルロックが発生するとアベンドにつながる可能性があります。データリカバリーの考え方は AS400のデータリカバリー確認手順 も参考にしてください。
SAV系コマンド実行前チェックリスト
| チェック | 確認内容 |
|---|---|
| 対象 | 保存するライブラリ、オブジェクト、ファイルが正しいか |
| 環境 | 本番/テスト、システム名、ライブラリリストを確認したか |
| 保存先 | SAVFのライブラリとファイル名が正しいか |
| 上書き | 既存SAVFや他人の退避を上書きしないか |
| ロック | SAVACTなどの指定で本番ファイルをロックしないか |
| 時間帯 | 利用者や夜間バッチに影響しないタイミングか |
| 確認 | DSPSAVFなどでSAVFの中身を確認したか |
| 復元 | 必要ならRST系で復元確認できるか |
| 共有 | 作業手順をメンバーにレビューしてもらったか |