Hitachi

ノンストップデータベース HiRDB Version 10 バッチ高速化機能


5.4.2 同期取得時点に回復する場合(関連RDエリアなし)

同期取得時点に回復する場合について説明します。

〈この項の構成〉

(1) 障害発生時の状況

RDDATA01(表格納RDエリア),RDLOB01(LOBデータ格納RDエリア)およびRDIDX01(インデクス格納RDエリア)をインメモリ化しました。

障害発生時の状況を次の図に示します。

図5‒8 障害発生時の状況(バッファ障害を同期取得時点に回復する場合(関連RDエリアなし))

[図データ]

[説明]
  1. RDDATA01,RDLOB01およびRDIDX01をインメモリ化しました。また,このとき,バックアップを取得しました。

  2. 更新業務を実行し,インメモリデータバッファ上のデータを更新しました。

  3. pdhold -bコマンドでインメモリデータバッファとRDエリアの同期を取ろうとしましたが,バッファ障害によって,RDDATA01,RDLOB01およびRDIDX01との同期が取れませんでした。

このときのインメモリデータバッファと各RDエリアの状態を次に示します。

  • インメモリデータバッファの状態:バッファ障害

  • RDDATA01の状態:障害閉塞状態(同期取得時(インメモリ化時)の状態)

  • RDLOB01の状態:障害閉塞状態(同期取得時(インメモリ化時)の状態)

  • RDIDX01の状態:障害閉塞状態(同期取得時(インメモリ化時)の状態)

(2) 障害回復の手順

RDDATA01,RDLOB01およびRDIDX01中のデータは同期取得時(インメモリ化時)のままです。RDDATA01,RDLOB01およびRDIDX01のデータを再度インメモリ化してインメモリデータバッファを同期取得時点に回復します。

障害回復の手順を次の図に示します。

図5‒9 障害回復の手順(バッファ障害を同期取得時点に回復する場合(関連RDエリアなし))

[図データ]

[説明]
  1. RDDATA01,RDLOB01およびRDIDX01のインメモリ化を解除します。

  2. RDDATA01,RDLOB01およびRDIDX01を再度インメモリ化します。

    ただし,RDエリア障害とバッファ障害の両方が発生している場合は,バックアップファイルを使ってRDDATA01,RDLOB01およびRDIDX01を回復したあとにインメモリ化します。

コマンドの実行手順を次に示します。

  1. RDDATA01,RDLOB01およびRDIDX01をクローズ状態にします。

     pdclose -r RDDATA01,RDLOB01,RDIDX01

    インメモリ化を強制解除するには,RDエリアの状態が障害閉塞クローズ状態になっている必要があるため,ここでRDDATA01,RDLOB01およびRDIDX01をクローズしています。

  2. RDDATA01,RDLOB01およびRDIDX01のインメモリ化を強制的に解除します。

     pdmemdb -k rels -r RDDATA01,RDLOB01,RDIDX01 -d
  3. RDDATA01,RDLOB01およびRDIDX01の障害閉塞クローズを解除します。

     pdrels -r RDDATA01,RDLOB01,RDIDX01 -o

    再度インメモリ化するには,RDエリアの状態がコマンド閉塞クローズ状態になっている必要があるため,ここでいったんRDDATA01,RDLOB01およびRDIDX01の障害閉塞クローズを解除しています。

  4. RDDATA01,RDLOB01およびRDIDX01をコマンド閉塞クローズ状態にします。

     pdhold -r RDDATA01,RDLOB01,RDIDX01 -c
  5. RDDATA01,RDLOB01およびRDIDX01を再度インメモリ化します。

     pdmemdb -k stay -r RDDATA01,RDLOB01,RDIDX01

    これによって,インメモリデータバッファは同期取得時点の状態に回復されました。

  6. RDDATA01,RDLOB01およびRDIDX01の閉塞クローズを解除します。

     pdrels -r RDDATA01,RDLOB01,RDIDX01 -o

    これによって,業務が再開できるようになりました。

RDエリア障害かつバッファ障害の場合

RDエリア障害とバッファ障害の両方が発生している場合は,手順2.でインメモリ化を解除したあと,バックアップファイルからRDエリアを同期取得時点に回復してください。それ以外の手順については,バッファ障害の場合と同じです。

(3) 障害回復時のインメモリデータバッファおよびインメモリRDエリアの状態遷移

障害回復時,インメモリデータバッファの状態およびインメモリRDエリアの状態は次の表のように遷移します。表の項番は,「障害回復の手順」の実行手順の番号と対応しています。なお,表中の実行コマンドは,一部オプションを省略しています。

表5‒4 障害回復時のインメモリデータバッファおよびインメモリRDエリアの状態遷移

項番

実行コマンド

コマンド実行後のバッファの状態※1

コマンド実行後のRDエリアの状態※2

RDDATA01,RDLOB01,RDIDX01

バッファ障害状態

障害閉塞かつオープン状態

1

pdclose -r RDDATA01,RDLOB01,RDIDX01

障害閉塞かつクローズ状態

2

pdmemdb -k rels -r RDDATA01,RDLOB01,RDIDX01 -d

未使用状態

3

pdrels -r RDDATA01,RDLOB01,RDIDX01 -o

オープン状態

4

pdhold -r RDDATA01,RDLOB01,RDIDX01 -c

コマンド閉塞かつクローズ状態

5

pdmemdb -k stay -r RDDATA01,RDLOB01,RDIDX01

DB同期状態

6

pdrels -r RDDATA01,RDLOB01,RDIDX01 -o

オープン状態

(凡例)

↓:状態の変化なし

−:該当しない

注※1 バッファの状態とは,インメモリデータバッファの状態のことです。

注※2 RDエリアの状態とは,インメモリRDエリアの状態のことです。