IBM Support

[Db2] トランザクション・ログのないバックアップをリストアする方法

Question & Answer


Question

データベースのバックアップをリストアしましたが、SQL1117N (ロールフォワード・ペンディング) でデータベースに接続できません。しかし、ロールフォワードに必要なトランザクション・ログはありません。 どうすればロールフォワード・ペンディングを解消して、データベースに接続できますか?

Cause

オンライン・バックアップをリストアした場合、オンライン・バックアップ実行中にデータベースへ行われた変更を反映し、データベースを整合状態にするためにロールフォワードが必須です。

オンライン・バックアップはデフォルトでロールフォワードに必要な最低限のログファイルをバックアップ・イメージに含めるため、このログを取り出してロールフォワードを完了できます。

オフライン・バックアップをリストアした場合、リストア時にロールフォワード不要と指定することで、ロールフォワード・ペンディングを回避できます。

Answer

オンライン・バックアップのリストア

以下の例では、/data/backup に置いた SAMPLE データベースのオンライン・バックアップ・イメージをリストアし、/tmp/logs にバックアップ・イメージに含まれるログを取り出します。

  1. インスタンス・オーナーでリストアするシステムにログインします。
  2. バックアップ・イメージをリストアし、かつ logtarget で指定したパスにログを取り出します。
    $ db2 restore db sample from /data/backup logtarget /tmp/logs
    注: すでにデータベースのリストアは完了し、ログだけを取り出したい場合、logs オプションを利用します。
    $ db2 restore db sample logs from /data/backup logtarget /tmp/logs
  3. logtarget へ取り出したログを使ってロールフォーワードします。
    $ db2 "rollforward db sample to end of backup and stop overflow log path ('/tmp/logs') noretrieve"

オフライン・バックアップのリストア

以下の例では、/data/backup に置いた SAMPLE データベースのオフライン・バックアップ・イメージをリストアします。

  1. インスタンス・オーナーでリストアするシステムにログインします。
  2. ロールフォワード不要 (without rolling forward) オプションを指定してリストアします。
    $ db2 restore db sample from /data/backup without rolling forward

運用上の考慮点

  • オンラインとオフラインの確認、およびログを含むかどうかの確認方法

    バックアップ・イメージがオンラインで採取されたものか、オフラインで採取されたものかおよび、オンラインの場合トランザクション・ログを含んでいるかは db2ckbkp コマンドで確認できます。

    (Unix/Linux)

    $ db2ckbkp -h <path_to_backup_image> | grep -e Mode -e Includes

    (Windows)

    C:\>db2ckbkp -h <path_to_backup_image> | findstr "Mode Includes"

    例:

    $ db2ckbkp -h /data/backup/SAMPLE.0.db2inst1.DBPART000.20171107164502.001 | grep -e Mode -e Includes
            Backup Mode                    -- 1 (Online)
            Includes Logs                  -- 1 (Yes)
  • リストア先にデータベース管理者が定義されていない場合の考慮点

    バックアップ元のデータベース管理者がリストア先のシステムに存在しない場合、DB2_RESTORE_GRANT_ADMIN_AUTHORITIES を ON に設定すると、リストアするユーザーにデータベース管理者権限 (SECADM 権限、DBADM 権限、DATAACCESS 権限、および ACCESSCTRL 権限) を付与できます。

    db2set DB2_RESTORE_GRANT_ADMIN_AUTHORITIES=ON
    db2stop
    db2start
    db2 restore db ...
  • リストア後にデータベース接続が SQL0752N で失敗する場合 db2 restore database 実行後に続けて db2 connect ステートメントを実行すると SQL0752N で失敗することがあります。この場合は db2 terminate コマンドで CLP を再起動してください。
  • データベースが生成したログを最後まで適用しないもしくは適用できない場合、ROLLFORWARD DATABASE コマンドに NORETRIEVE オプションを付与してください。このオプションによって現在利用可能でないログの検索による SQL1268N を防げます。
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと Db2 テクニカル・サポートへお問い合わせください。
Db2 テクニカル・サポート

[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PmdAAE","label":"Recovery-\u003ERestore"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
13 November 2023

UID

swg22010348