IBM Support

[Db2] COPY YES オプションを指定した LOAD コマンドを実行する場合の注意点

Question & Answer


Question

COPY YES オプションを指定した LOAD コマンドを実行する場合に、注意すべき点があれば教えてください。

Answer

COPY YES オプションを指定した LOAD コマンドを実行した場合、下記の事象が発生する可能性があります。
  1. LOAD コマンド実行時のログをロールフォワードを使用してリカバリーした場合、Db2 は、COPY YES オプションで指定したパスからロードの際にコピーされたデータを取得し、LOAD コマンドを再実行します。 しかし、指定したパスにコピー・イメージがない、もしくは、 パスにアクセスできない場合は、LOAD 処理をリカバリーすることができません。 そのため、ロールフォワード時に SQL3799W が発生し、そのまま中止した場合にはロード対象の表が格納されている表スペースがリストア・ペンディングとなり、アクセス不能になります。

    例)
    $ db2 "rollforward db sample to end of logs and stop"
    SQL3799W 警告 "-2036" (追加情報 "/work/loadtest/copydir/SAMPLE.4.db")により、 表 "DB2INST1.STAF" のロード・リカバリーが、ノード"0" で "2015010718072" にペンディングになっています。
    (c) で続行、(d) でこの装置のみ終了、 (t) でユーティリティーを中止します。 (c/d/t)
    例えば、ロード操作のパフォーマンス向上のために COPY YES オプションに /dev/null を指定し、その操作を含むロールフォワード時に、この事象が発生します。
     
  2. HADR 環境において、プライマリー・データベースで COPY YES オプションを指定した LOAD コマンドを実行した場合、スタンバイ・データベース側でロード操作を再実行する際に COPY YES で指定されたパスからロードの際にコピーされたデータを取得し、ロード操作を再実行します。 しかし、スタンバイ・データベース側から COPY YES オプションで指定したパスまたは装置経由でデータにアクセスできない場合、ロードの対象表が格納されている表スペースが、スタンバイ・データベース上でリストア・ペンディング状態になり、アクセス不能になります。
    Db2 v10.5 fp9 および v11.1 m1fp1 以降、このような表スペースが存在する場合は db2pd -hadr の HADR_FLAGS に STANDBY_TABLESPACE_ERROR と表示されます。


回避策

上記事象を発生させないためには、下記の回避策をご参照ください。

1. の事象を回避するためには、ロード操作実行後、できるだけ早いタイミングで該当データベースのバックアップを取得してください。もしくは、COPY先を /dev/null にすることを避けてください。

2. の事象を回避するためには、プライマリー・データベース側で LOAD コマンドを実行する際に COPY YES で指定するパスをスタンバイ・データベース側からアクセス可能にする必要があります。例えば、UNIX環境の場合には、NFSなどを使用します。


解決策

上記事象に陥ってしまった場合には下記の解決策をご参照ください。

1.の事象に陥ってしまった場合には、下記のいずれかの対応を実施してください。
  • コピー・イメージを移動していた、もしくは、該当のパスへのアクセス権がないような場合には、SQL3799W が出ている状態で DB2 がアクセス可能な状況に戻した後、(c) を選択し処理を続行してください。 ロールフォワードを中止してしまった、もしくは、続行しても復旧できなかった場合は、リストアから再実行してください。
  • /dev/null を指定して実行していた、もしくは、コピー・イメージを削除してしまったような場合には、LOAD処理実行直前の時間を指定したロールフォワードを実施後、後続の処理を手動で実行いただくなどの対応が必要です。

2. の事象に陥ってしまった場合には、HADR のプライマリー・データベースで取得したバックアップ・イメージを、スタンバイ・データベースにリストアし、再同期をとってください。詳細は以下のページを参照してください。
HADR スタンバイ・データベースの表スペース・エラーのリカバリー


関連情報
パスポート・アドバンテージによく寄せられる質問
[Db2] リストア・ペンディングの回復方法

COPY YES オプションに /dev/null を指定した LOAD 処理を含むロールフォワード時に、表スペースのステータスを"正常(NORMAL)"としてしまうという障害が報告されています。
IC95904: ROLLFOWARD FAILURE FOR THE LOAD COPY YES INTO /DEV/NULL MAY WRONGLY LEAVE THE TABLESPACE IN NORMAL STATE

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

Document Information

Modified date:
23 August 2023

UID

swg21695431