データベースの更新内容を元に戻したい
Question
本来実行しようとしていた処理とは異なる処理を実行してしまい、複数のデータベースが更新されてしまいました。更新処理内容が多く、手動でデータベースを修正していくことは難しい状況です。
更新前のバックアップがない状態で、処理前のデータベースに戻す方法はありますでしょうか。因みに対象ファイルにはジャーナルが接続されています。
Answer
ジャーナルを使用しているという事ですので、コマンド「RMVJRNCHG(ジャーナル処理済み変更除去)」を使用すれば、データをある時点まで戻すことが可能で、このコマンドは、ジャーナル・レシーバーに書かれたログを使用して実際の更新内容を除去するコマンドです。
コマンド例:
RMVJRNCHG JRN(LIB/JRN) FILE((*ALL)) FROMENTLRG(*LAST)
TOENTLRG(12345)
上記コマンドの場合、ジャーナル「LIB/JRN」に接続されたすべてのファイルに対して、ジャーナル順序番号の最後の項目から順序番号「12345」までの項目をデータベースから除去する、という内容になります。
但しRMVJRNCHGにはいくつかの制約があります。
例えば以下のようなことです。
- ジャーナル処理されている またレコード・イメージが「*BOTH」になっていること
- 物理ファイルが存在していること
- 該当ファイルがロックされていないこと
詳細は、コマンドのヘルプやIBMナレッジセンターをご確認ください。
https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_73/cl/rmvjrnchg.htm
因みに、例えばバックアップデータを復元し、ジャーナルを使用して最新の状態までデータベースを更新するという方法もございます。
これは、コマンド「APYJRNCHG(ジャーナル処理済み変更適用)」を使用します。
コマンド「RMVJRNCHG」「APYJRNCHG」を使用する場合は、この処理を実行して本当に問題がないのかをよく考えて計画立てて行う必要があります。
ただ、今回のようなヒューマンエラーの場合データベースの修正はRMVJRNCHGで対応するとしても、まずは今後このような事が起こらないように、対策を考えることも必要かと思います。
by かんぴょう木綿さん