Hitachi

ノンストップデータベース HiRDB Version 9 構造型データベース機能


5.13.4 更新可能なオンライン再編成の運用手順

更新可能なオンライン再編成の運用手順の流れを次の図に示します。

図5‒15 更新可能なオンライン再編成の運用手順の流れ

[図データ]

注※

pd_lv_mirror_useオペランドにYを指定している場合,この操作は必要ありません。

[説明]

オリジナルRDエリアでSDBデータベースの再編成を実行し,レプリカRDエリアで業務(参照および更新処理)を続行します。

更新可能なオンライン再編成の運用手順を例題形式で説明します。なお,例題の説明は,インナレプリカ機能についての知識があることを前提にしています。

例題

オリジナルRDエリアに格納されているSDBデータベースに対して,更新可能なオンライン再編成を実施します。レコード型およびインデクスを格納しているRDエリアは次のとおりです。

[図データ]

なお,この例では,RDエリアのオープン属性は,オリジナルRDエリアがINITIAL,レプリカRDエリアがDEFERであるとしています。

〈この項の構成〉

(1) RDエリアをオンライン再編成閉塞にする(pdorbeginコマンド)

pdorbeginコマンドで,SDBデータベースが格納されているRDエリア(オリジナルRDエリアとレプリカRDエリアの両方)をオンライン再編成閉塞にします。

 pdorbegin -t REC1 -q 1 -w 60
[オプションの説明]

-t:ルートレコードのレコード型名を指定します。

-q:オンライン再編成閉塞にするレプリカRDエリアの世代番号を指定します。

-w:RDエリアの状態をオンライン再編成閉塞にする際の,排他待ち時間を秒単位で指定します。

pdorbeginコマンドを実行すると,次のRDエリアがオンライン再編成閉塞になります。

この例では,FMB01,FMBIDX,FMB01_1,およびFMBIDX_1がオンライン再編成閉塞になります。

このコマンドの実行後から,「(3) カレントRDエリアを切り替える(pdorchgコマンド)」までの間は,オンライン再編成閉塞のRDエリアにアクセスするトランザクションは待ち状態になります。

[図データ]

■RDエリア名指定をする場合

次のように-rオプションにRDエリア名を指定して,更新可能なオンライン再編成の対象RDエリアをオンライン再編成閉塞にすることもできます。この場合,BES内の関連RDエリア(FMB01,FMBIDX)を漏れなく指定してください。

 pdorbegin -r "FMB01","FMBIDX" -q 1 -w 60
[オプションの説明]

-r:オンライン再編成閉塞にするオリジナルRDエリアを指定します。

-q:オンライン再編成閉塞にするレプリカRDエリアの世代番号を指定します。

-w:RDエリアの状態をオンライン再編成閉塞にする際の,排他待ち時間を秒単位で指定します。

pdorbeginコマンドを実行すると,-rオプションに指定したオリジナルRDエリアと,-qオプションに指定した世代のレプリカRDエリアが,オンライン再編成閉塞になります。

参考

pdrdreflsコマンドで関連RDエリアを確認できます。詳細については,「5.13.3(3) 関連RDエリアの確認(pdrdreflsコマンド)」を参照してください。

(2) ペアボリュームを解除する

5.13.3(9) ペアボリュームの定義」で設定したペアボリュームを解除してください。解除方法については,使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は,最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

(3) カレントRDエリアを切り替える(pdorchgコマンド)

pdorchgコマンドで,カレントRDエリアを切り替えてください。

 pdorchg -s bes1
[オプションの説明]

-s:更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdorchgコマンドの完了後,トランザクションの待ち状態は解除され,レプリカRDエリアにアクセスすることで業務が再開されます。

[図データ]

(4) オリジナルRDエリアのバックアップを取得する(pdcopyコマンド)

pdcopyコマンドで,オリジナルRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX -q 0
 -b /bkdir/bkup01 -p /bkdir/list01
[オプションの説明]

-m:マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M:バックアップ取得モードを指定します。

-r:オリジナルRDエリア名を指定します。

-q:バックアップ対象のRDエリアの世代番号を指定します。

-b:バックアップファイル名を指定します。

-p:pdcopyコマンドの処理結果リストの出力先を指定します。

この時点でのバックアップの取得は任意ですが,SDBデータベースの再編成時の障害に備えてバックアップを取得することをお勧めします。バックアップを取得する場合は,pdcopyコマンドの実行前に,pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。

(5) オリジナルRDエリアのレコードをアンロードする(pdsdbrogコマンド)

pdsdbrogコマンドで,オリジナルRDエリアのレコードをアンロードします。

 pdsdbrog /usr/sdb/control_file1
[オプションの説明]

/usr/sdb/control_file1:pdsdbrog制御文ファイル名を指定します。pdsdbrog制御文の内容を次に示します。

 environment
     schema = FMB                    ...1
     generation = 0                  ...2
 unload
     server = bes1                   ...3
     record = REC1                   ...4
     unldfile = /usr/sdb/unload1     ...5
     prefix = 5                      ...6
     unldkind = lod                  ...7
 dbinf
     userpflg =(0)                   ...8
     pagenum = (1)                   ...9
  1. SDBデータベース名を指定します。

  2. アンロード対象のRDエリアの世代番号を指定します。

  3. アンロード対象のRDエリアがあるBESを指定します。

  4. ルートレコードのレコード型名を指定します。

  5. アンロードデータファイル名を指定します。

  6. プリフィクス部の長さを指定します。

  7. データロードで使用できる入力データファイルの形式でアンロードデータファイルを作成します。

  8. USERポインタフラグの格納位置を指定します。

  9. 事前割り当てページ数の格納位置を指定します。

(6) オリジナルRDエリアにレコードをデータロードする(pdsdblodコマンド)

pdsdblodコマンドで,オリジナルRDエリアにレコードをデータロードします。

 pdsdblod /usr/sdb/control_file2
[オプションの説明]

/usr/sdb/control_file2:pdsdblod制御文ファイル名を指定します。pdsdblod制御文の内容を次に示します。

 environment
     schema = FMB                   ...1
     purge = yes                    ...2
     logmode = all                  ...3
     generation = 0                 ...4
 load
     server = bes1                  ...5
     type = tree                    ...6
     record = REC1                  ...7
     data = /usr/sdb/unload1        ...8
     prefix = 5                     ...9
     dupkeyck = no                  ...10
     seqkeyck = no                  ...11
 
 dbinf
     userpflg =(0)                  ...12
     pagenum = (1)                  ...13
 oreload
     midfile = /usr/sdb/midfile1    ...14
  1. SDBデータベース名を指定します。アンロード時に指定したSDBデータベース名を指定します。

  2. 既存レコードを削除してデータロードを実行します。必ずyesを指定してください。

  3. ログ取得モードでデータロードを実行します。データロードは,ログ取得モードで実行することを推奨します。

  4. データロード対象のRDエリアの世代番号を指定します。アンロード時に指定した世代番号を指定します。

  5. データロード対象のRDエリアがあるBESを指定します。アンロード時に指定したBES名を指定します。

  6. 4V FMBのSDBデータベースのデータロードのため,treeを指定します。

  7. ルートレコードのレコード型名を指定します。アンロード時に指定したレコード型名を指定します。

  8. (5) オリジナルRDエリアのレコードをアンロードする(pdsdbrogコマンド)」で作成したアンロードデータファイルを入力データファイルとして指定します。

  9. プリフィクス部の長さを指定します。

  10. 入力データと格納済みレコードとのキー重複チェックを実行しない指定をします。

  11. 入力データのシーケンシャルインデクスのキー順をチェックしない指定をします。

  12. USERポインタフラグの開始位置を指定します。アンロード時に指定した格納位置を指定します。

  13. 事前割り当てページ数の開始位置を指定します。アンロード時に指定した格納位置を指定します。

  14. 追い付き反映キー対応表の中間ファイルを格納するディレクトリ名を指定します。

注意事項
  • アンロード時に作成したアンロードデータファイルを,データロード時の入力データファイルに指定してください(入力データファイルの指定を間違わないようにしてください)。アンロードデータファイルの内容とデータロードの結果を基に,追い付き反映キー対応表にデータが登録されます。このため,間違ったアンロードデータファイルを入力データファイルに指定した場合,SDBデータベースの内容が不整合になります。

  • データロードの再実行に備えて,更新可能なオンライン再編成が完了するまで,アンロードデータファイルを削除しないでください。データロードが正常終了したあと(KFPB63012-Iメッセージが出力されたあと)に,データロードの再実行が必要になった場合,pdsdbrogコマンドでアンロードを再実行してアンロードデータファイルを作成しても,アンロードデータファイルの内容はデータロード後の内容になっています。

(7) オリジナルRDエリアのバックアップを取得する(pdcopyコマンド)

pdcopyコマンドで,オリジナルRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r FMB01,FMBIDX -q 0
 -b /bkdir/bkup02 -p /bkdir/list02
[オプションの説明]

-m:マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M:バックアップ取得モードを指定します。

-r:オリジナルRDエリア名を指定します。

-q:バックアップ対象のRDエリアの世代番号を指定します。

-b:バックアップファイル名を指定します。

-p:pdcopyコマンドの処理結果リストの出力先を指定します。

pdcopyコマンドの実行前に,pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。

(8) 追い付き反映キー対応表を格納しているRDエリアのバックアップを取得する(pdcopyコマンド)

pdcopyコマンドで,追い付き反映キー対応表,および追い付き反映キー対応表のインデクスを格納しているRDエリアのバックアップを取得します。

 pdcopy -m /HiRDB/rdarea/rdmast/rdmast00 -M r -r RDCRT,RDIDX
 -b /bkdir/bkup03 -p /bkdir/list03
[オプションの説明]

-m:マスタディレクトリ用RDエリアの先頭HiRDBファイル名を指定します。

-M:バックアップ取得モードを指定します。

-r:追い付き反映キー対応表,および追い付き反映キー対応表のインデクスを格納しているRDエリアを指定します。

-b:バックアップファイル名を指定します。

-p:pdcopyコマンドの処理結果リストの出力先を指定します。

(9) 追い付き反映処理を実行する(pdorendコマンド)

pdorendコマンドで,追い付き反映処理を実行します。

 pdorend -s bes1
[オプションの説明]

-s:更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdorendコマンドを実行すると,次の処理が行われます

(10) ファイルアクセスプロセスを停止する(pdpfreshコマンド)

pd_lv_mirror_useオペランドにYを指定している場合,(10)および(11)の操作は必要ありません。

pdpfreshコマンドで,ファイルアクセスプロセスを停止します。

 pdpfresh -s bes1
[オプションの説明]

-s:更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

pdpfreshコマンドを実行すると,レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスを非同期に終了させます。強制的にリフレッシュする場合は,-fオプションを指定してください。

なお,更新可能なオンライン再編成の対象RDエリアのオープン属性がSCHEDULEの場合は,この操作は必要ありません。

(11) レプリカRDエリアにアクセスしているプロセスが存在しないことを確認する(pdpfreshコマンド)

pdpfreshコマンドで,レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスが存在しないことを確認します。

 pdpfresh -c
[オプションの説明]

-c:サーバプロセスのリフレッシュ状態を表示するオプションです。

pdpfreshコマンドのリターンコードが0の場合,レプリカRDエリアのHiRDBファイルシステム領域にアクセスしているプロセスは存在していないため,ペアボリュームを再同期できます。

リターンコードが0以外の場合,次のコマンドでHiRDBファイルシステム領域にアクセスしているプロセスを特定してください。

 pdls -d prc -s bes1 -c
[オプションの説明]

-d prc:プロセスの状態を表示するオプションです。

-s:更新可能なオンライン再編成の対象RDエリアがあるBESを指定します。

-c:サーバプロセスによるファイルアクセス状態を表示するオプションです。

pdlsコマンドの実行結果

 HOSTNAME : sdb-bs2000-1 (112622)
 STATUS  PID     UID   GID   SVID     TIME    PROGRAM    C-PID  C-GRP
   C     13805   339   300   bes1     999999  UAP1
   L     13806   339   300   bes1     999999
[説明]

STATUS欄にCが表示されているプロセスが,レプリカRDエリアのHiRDBファイルシステム領域にアクセスしている可能性があります。このプロセスを強制的にリフレッシュしてよい場合は,pdpfresh -fコマンドを実行してください。このプロセスを強制的にリフレッシュしてはいけない場合は,このプロセスが実行中のジョブの終了まで待つか,またはそのジョブを終了させるような対処をしてください。

(12) ペアボリュームを再同期する

解除したペアボリュームを再同期します。操作方法については,使用しているミラーリング機能のマニュアルを参照してください。日立ディスクアレイサブシステムを使用している場合は,最初にマニュアル「インナレプリカ機能 HiRDB Staticizer Option Version 9」の「日立ディスクアレイサブシステム使用時の注意事項および操作手順」を参照してください。

なお,更新可能なオンライン再編成の実行中に障害が発生した場合の対処方法については,「5.23 障害が発生したときの対処方法(更新可能なオンライン再編成の実行時)【4V FMB】」を参照してください。