IBM Support

[Db2] WRITE SUSPEND 状態の不整合なデータベースの復旧方法

Question & Answer


Question

SET WRITE SUSPEND 実行中にインスタンスが異常終了しました。 その後インスタンスを再始動しましたが、データベースへの接続が SQL1552N で失敗します。 データベースを復旧させる方法を教えてください。

Cause

SET WRITE SUSPEND により表スペースを WRITE SUSPEND 状態にすると、ディスクへの書き出しが必要な処理は、SET WRITE RESUME により WRITE SUSPEND が解除されるまで待ちの状態となります。

SET WRITE SUSPEND 実行中にインスタンスが異常終了した場合は、表スペースは WRITE SUSPEND 状態のままになっています。その後インスタンスを開始しデータベースを活動化するためには、不整合状態のデータベースの復旧のためにクラッシュ・リカバリーの実行が必要です。
クラッシュ・リカバリーは、トランザクション・ログをもとにデータベースへの更新処理を行いデータベースを正常な状態に戻す処理ですが、表スペースが WRITE SUSPEND 状態の場合は更新が行えず、以下のようにクラッシュ・リカバリーが SQL1552N で失敗します。
$ db2 connect to SAMPLE
SQL1552N  データベースが現在 WRITE SUSPEND 状態であるため、コマンドが失敗しました。
このとき db2diag.log には以下のようなログが記録されます。
2011-11-01-11.32.19.166035+540 I3935643A435       LEVEL: Warning
PID     : 7024846              TID  : 2829        PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000         DB   : SAMPLE
APPHDL  : 0-8                  APPID: *LOCAL.db2inst1.111101023219
AUTHID  : DB2INST1
EDUID   : 2829                 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, base sys utilities, sqledint, probe:30
MESSAGE : Crash Recovery is needed.

2011-11-01-11.32.19.284993+540 E3936079A590       LEVEL: Info
PID     : 7024846              TID  : 2829        PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000         DB   : SAMPLE
APPHDL  : 0-8                  APPID: *LOCAL.db2inst1.111101023219
AUTHID  : DB2INST1
EDUID   : 2829                 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:22
MESSAGE : ADM6023I  The table space "SYSCATSPACE" (ID "0") is in state
          0x"10000".  The table space cannot be accessed.  Refer to the
          documentation for SQLCODE -290.

2011-11-01-11.32.19.285881+540 I3936670A496       LEVEL: Error
PID     : 7024846              TID  : 2829        PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000         DB   : SAMPLE
APPHDL  : 0-8                  APPID: *LOCAL.db2inst1.111101023219
AUTHID  : DB2INST1
EDUID   : 2829                 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:22
MESSAGE : ZRC=0x800200F3=-2147352333=SQLB_FAIL2_SUSPEND_WRITE_ON
          "Restart failed"

2011-11-01-11.32.19.286090+540 E3937167A660       LEVEL: Severe
PID     : 7024846              TID  : 2829        PROC : db2sysc 0
INSTANCE: db2inst1             NODE : 000         DB   : SAMPLE
APPHDL  : 0-8                  APPID: *LOCAL.db2inst1.111101023219
AUTHID  : DB2INST1
EDUID   : 2829                 EDUNAME: db2agent (SAMPLE) 0
FUNCTION: DB2 UDB, buffer pool services, sqlbStartPools, probe:22
MESSAGE : ADM6024C  The database cannot be restarted because table spaces
          cannot be brought ONLINE as a result of an outstanding WRITE SUSPEND.
          To restart the database specify WRITE RESUME on the RESTART DATABASE
          command.

Answer

WRITE SUSPEND 状態のデータベースでクラッシュ・リカバリーを正常に完了するためには、WRITE RESUME オプションを指定して RESTART DATABASE コマンドを実行してください。
$ db2 restart database SAMPLE write resume
DB20000I  RESTART DATABASE コマンドが正常に完了しました。
$ db2 connect to SAMPLE

   データベース接続情報

 データベース・サーバー                                   = DB2/AIX64 11.5.7
 SQL 許可 ID                                              = DB2INST1
 ローカル・データベース別名                               = SAMPLE

関連情報
お問合せ先
技術的な内容に関して、パスポート・アドバンテージの契約のもと 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":"a8m500000008PmfAAE","label":"Recovery-\u003ESplit Mirror"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]

Document Information

Modified date:
26 August 2023

UID

swg21572461