web-dev-qa-db-ja.com

オフラインバックアップの復元後にDB2データベースに接続できない

これは、AIX上のDB2 9.7 Enterprise Server Edition用です。

パフォーマンス環境で、インスタンス内のいくつかのデータベースの完全なオフラインバックアップを取得しました。

これらのデータベースを統合環境に復元したかったのです。

コマンドを実行しました

db2 restore database database_name from 
/bkp/instance_name/OfflineBackups/RestorePoint/my_restore_point 
taken at 20120321103846 into database_name without prompting;

データベースごとに(もちろん、データベース名とタイムスタンプを適切に変更します)。

各データベースは、DB2に従って正常に復元されました。しかし、データベースが実際に思ったとおりに復元されたかどうかを確認したい場合、データベースに接続しようとするとエラーが発生します

    SQL1117N  A connection to or activation of database "database_name" cannot be made 
because of ROLL-FORWARD PENDING.  SQLSTATE=57019

すべての接続が強制的にオフにされ、データベースがオフラインバックアップのためにダウンしていたため、以前のデータベースには処理中のトランザクションはありませんでした。私は何をしますか?

6
Chris Aldrich

答えが見つかりました こちら

コマンドを実行する必要がありました

db2 rollforward db database_name to end of backup and complete;

これにより、すべてがログにコミットされ、データベースは保留状態ではなくなり、接続が可能になります。復元するデータベースごとにこれを行う必要がありました。

編集:DB2NightShow エピソードに参加しているときに、この気の利いたナゲットを見つけました。 9.7 FP2では、DB2_RESTORE_GRANT_ADMIN_AUTHORITYというレジストリー変数が導入されました。あるインスタンスから別のインスタンスにバックアップを復元する場合は、復元されたデータベースのインスタンス所有者SECADM、DBADM、DATAACCESS、ACCESSCTRLが自動的に付与されるため、これは便利です。 9.7 FP5では、設定は動的であり、インスタンスのバウンスを必要としません。私の元の質問はセキュリティとは何の関係もないことに気づきましたが、遭遇する可能性があり、これはここに置く便利な一口だと思いました。


EDIT#2:私は最近、バックアップがアーカイブログデータベースに基づくオフラインバックアップである場合、WITHOUT ROLLING FORWARD句をRESTOREコマンド。これにより、復元が成功するとすぐにデータベースのロールフォワードペンディング状態が解除されます。つまり、ROLLFORWARD DBコマンドを発行する必要がなくなります。

5
Chris Aldrich