アーカイブログ運用を行っている場合、誤操作を行う直前の状態にデータをリカバリすることができます。
下図に、目的の業務を行った後に複数のコマンド操作(操作1、2)を行ったあと、誤操作(操作3)を行ってしまった場合の例を示します。
なお、ここで説明しているコマンド操作とは、以下のいずれかのコマンドによる操作を表します。
rdbfmtコマンド(DSIの初期化)
rdbsloaderコマンド(データベースの初期創成)
rdbsaloaderコマンド(データベースの更新(データの追加))
rdbsuloaderコマンド(データベースの更新)
バックアップを取得してから最初に行った操作の直前の時点(図中の矢印の時点)を特定し、その時点にリカバリ後、正しく行った操作を再実行してリカバリします。また、リカバリ後には業務再開に向けてバックアップを取得します。
注意
バックアップ取得後に最初の操作(上図の操作1)の時点で、並行して業務アプリケーションが動作していた場合は、正しくリカバリすることができません。
リカバリ操作を行う際、表のDSIと表のDSIに定義されているインデックスのDSIを割り当てているデータベーススペースをすべて指定してください。すべて指定していない場合は、リカバリ対象のデータベーススペースに割り当てられているDSIの領域にアクセス禁止状態が設定されます。
バックアップ取得以降の最初の操作(図中の操作1)の時点を特定します。
リカバリの対象となるコマンド操作(“表6.1 誤操作とリカバリ対象”を参照)を行ったときには、RDBREPORTで指定したメッセージログファイルの中から、qdg14119iのメッセージを探してください。出力されているメッセージから、誤操作を行った資源(DSI)に一致するコマンドとリカバリポイントを確認してください。
在庫表DSI1に対してrdbsloaderコマンドを実行した場合のメッセージは以下のように出力されています。
qdg14119i:リカバリポイントを設定しました 操作='rdbsloader' 対象資源='在庫管理DB.在庫表DSI1' リカバリポイント名 ='_SYMFORDBSYSTEM_100_100_20070318_103059_012324_'
バックアップ時点から、最初に行われた誤操作の直前までリカバリします。
$ rdbexspc -mdetach -p 在庫管理DB.DBSP_1 $ rdbmrrcv -P -p 在庫管理DB.DBSP_1 -f /back -w /tmp -E _SYMFORDBSYSTEM_100_100_20070318_103059_012324_
注意
誤操作がrdbfmtコマンドの場合、rdbfmtコマンド実行前の時点にリカバリを行うと、表のDSIのみがリカバリされ、関連するインデックスのDSIはリカバリされません。この場合は、rdbsloaderコマンドのxオプション(インデックスのDSIの創成)を実行してインデックスをリカバリしてください。
リカバリの時点以降に行った正常な操作(コマンド、トランザクション)だけを再実行します。
業務再開に向けてバックアップを行います。
$ rdbmrdmp -D -p 在庫管理DB.DBSP_1 -f /back_tmp $ rdbmrdmp -p 在庫管理DB.DBSP_1 -f /back_tmp