事象
下記コマンドで取得したバックアップファイルを
$ db2 backup db sample to /tmp/
下記コマンドでリストアを試み
$ db2 restore db sample from /tmp
該当データベースに接続を試みるも以下エラーとなる。
$ db2 connect to sample SQL1117N A connection to or activation of database "SAMPLE" cannot be made because of ROLL-FORWARD PENDING. SQLSTATE=57019
環境情報
- DB2 v11.5
- CentOS Linux 7 (Core)
原因/解決策
リストア後に行うロールフォワード処理が不足しているため、リストア処理が完了していない。
よって以下コマンドを実行することで
$ db2 rollforward database sample to end of logs and complete
正常に接続が可能になる。
$ db2 connect to sample Database Connection Information Database server = DB2/LINUXX8664 11.5.0.0 SQL authorization ID = DB2INST1 Local database alias = SAMPLE
以下、補足です。
補足
以下の記事でも紹介したDb2バックアップユーテリティですが
同じくユーティリティを利用したDb2のリストアにおいてはトランザクションログを適用する必要があります。
$ db2 restore db sample from /tmp taken at .... DB20000I The RESTORE DATABASE command completed successfully.
$ db2 rollforward database sample to end of logs and complete Rollforward Status Input database alias = sample Number of members have returned status = 1 Member ID = 0 Rollforward status = not pending Next log file to be read = Log files processed = - Last committed transaction = ... DB20000I The ROLLFORWARD command completed successfully.
ちなみにオフラインバックアップであれば、リストア時にWITHOUT ROLLING FORWARD
を付与すれば同様のエラーにはなりません。
以上、ご参考になれば幸いです。