3.5.2 オンラインでのデータベースの再編成(オンライン再編成)
オンライン再編成の例を示します。オンライン再編成では,データベースを再編成している間,オンラインで参照業務ができます。更新業務はできません。再編成の間に更新業務もできる更新可能なオンライン再編成については,「更新可能なオンライン再編成の運用方法」を参照してください。
ここでは,カレントRDエリアをレプリカRDエリアに変更したあと,オリジナルRDエリアを使ったデータベースを再編成します。例では,オリジナルRDエリアをオンライン業務に使用し,再編成実行前のカレントRDエリアがオリジナルRDエリアであることを想定しています。この状態のときに,RD01のRDエリアに格納されている表TAB1を再編成します。
再編成を実施するには,レプリカを定義したあと,次の図に示す操作を実行します。レプリカの定義方法については,「レプリカの定義」を参照してください。
|
手順1では,「レプリカの実体の作成(ペアボリュームの分離)」で示す操作とほとんど同じですが,閉塞,オープンする対象のRDエリアが「レプリカの実体の作成(ペアボリュームの分離)」と異なります。ここでは,「レプリカの作成(レプリカRDエリアへアクセスするためのペアボリュームの分離)」で示す手順を実施します。
以降,各操作について説明します。なお,各操作の終了後,実行結果が正しいかどうかを確認することをお勧めします。各操作で使用するコマンドの実行結果の確認方法については,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
- 〈この項の構成〉
(1) レプリカの作成(レプリカRDエリアへアクセスするためのペアボリュームの分離)
ここでは,表の再編成を実行するレプリカRDエリアへ物理的にアクセスできるようにするため,ペアボリュームを分離します。
(a) オリジナルRDエリアの静止化(バックアップ閉塞化)
レプリカの実体を作成するために,HiRDBのpdholdコマンドでオリジナルRDエリアをバックアップ閉塞にします。pdholdコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdholdコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
- pdholdコマンドの実行例
pdhold -r RD01,RD02 -q 0 -bまたは pdhold -r RD01,RD02 -b
オリジナルRDエリアRD01とRD02を,-bオプションで指定する「トランザクションを完結させ,更新不可かつ参照だけができる状態(参照可能バックアップ閉塞状態)」かつ「更新トランザクションをエラーにする状態」に設定します。pdholdコマンドでは,RDエリア名の指定に-qオプションを使用する場合としない場合のどちらもできます。
(b) ミラーリング機能によるレプリカ実体の作成(ペアボリュームの分離)
二重化されていたレプリカRDエリアとオリジナルRDエリアのボリューム(ペアボリューム)を分離し,レプリカRDエリアへ物理的にアクセスできるようにします。分離には,ハードウェアまたはソフトウェアのミラーリング機能を使用します。注意事項などについては,「ミラーリング機能によるレプリカ実体の作成(ペアボリュームの分離)」を参照してください。
(c) レプリカRDエリアの閉塞解除およびオープン
この例では,再編成を実施するレプリカRDエリアだけを閉塞解除し,オープンします。オリジナルRDエリアの閉塞解除は,カレントRDエリアをレプリカRDエリアに変更したあとに実施します。
閉塞解除およびオープンには,HiRDBのpdrelsコマンドを使用します。pdrelsコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdrelsコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。次に,pdrelsコマンド実行例を示します。
- pdrelsコマンドの実行例
pdrels -r RD01,RD02 -q 1 -o
レプリカRDエリアRD01_GN1とRD02_GN2の閉塞状態を解除し,オープンします。ここでは,レプリカRDエリアRD01_GN1とRD02_GN2の指定に-qオプションを使用しています。-rオプションにオリジナルRDエリア名を,-qオプションに世代番号1を指定することで,レプリカRDエリアRD01_GN1とRD02_GN2をpdrelsコマンドの処理対象にすることができます。
(2) カレントRDエリアをレプリカRDエリアに変更
図「オンラインでのデータベースの再編成(オリジナルRDエリア内の表を再編成する場合)の手順」の手順3で示す再編成を実行する前に,カレントRDエリアをレプリカRDエリアに変更します。
(a) レプリカRDエリアの参照許可閉塞
カレントRDエリアをレプリカRDエリアに変更して運用するために,レプリカRDエリアに対して参照だけができる閉塞状態(参照許可閉塞)を設定します。再編成中に更新が発生しないように,参照許可閉塞状態にしておきます。参照許可閉塞は,HiRDBのpdholdコマンドで設定します。pdholdコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構築している場合,システムマネジャがあるサーバマシンで実行します。pdholdコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
- pdholdコマンドの実行例
pdhold -r RD01,RD02 -q 1 -i
参照許可閉塞は,-iオプションで指定しています。
(b) カレントRDエリアの変更
カレントRDエリアをレプリカRDエリアに変更します。カレントRDエリアの変更には,HiRDBのpddbchgコマンドを使用します。
- pddbchgコマンドの実行例
pddbchg -r RD01,RD02 -q 1
カレントRDエリアを世代番号1のレプリカRDエリアに変更するために,-rオプションにオリジナルRDエリア名RD01,RD02を指定し,-qオプションに新しくカレントとなるRDエリアの世代番号1を指定します。
(c) オリジナルRDエリアの閉塞解除
図「オンラインでのデータベースの再編成(オリジナルRDエリア内の表を再編成する場合)の手順」の手順1で実行したオリジナルRDエリアの静止化(バックアップ閉塞)をpdrelsコマンドで解除します。
- pdrelsコマンドの実行例
pdrels -r RD01,RD02 -q 0
-rオプションに閉塞を解除するオリジナルRDエリアの名称RD01,RD02を指定し,-qオプションにオリジナルRDエリアの世代番号0を指定します。
(3) データベースの再編成
(a) オリジナルRDエリア内の表の再編成
HiRDBのpdrorgコマンドでunload文を実行して,オリジナルRDエリア内のデータをアンロードします。ここでは,indexおよびsort文を実行して,レプリカRDエリア内のインデクス情報も出力します。次に,unload,indexおよびsort文の指定例,pdrorgコマンドの実行例を示します。
- unload,indexおよびsort文の指定例
-
unload,indexおよびsort文の制御ファイル名:/usr/rorg01の内容を次に示します。
- ・HiRDB/パラレルサーバの場合
unload bes1:/tmp/unldfile2 index IDX1 RD02 /tmp/index_inf2 sort bes1 /tmp/sortwork/,512
- ・HiRDB/シングルサーバの場合
unload /tmp/unldfile2 index IDX1 RD02 /tmp/index_inf2 sort /tmp/sortwork/,512
unload文に,アンロード先のファイル名/tmp/unldfile2を指定します。index文には,インデクス識別子IDX1,それを格納しているRDエリアRD02およびインデクス情報ファイル名/tmp/index_inf2を指定します。ここでは,RDエリア名には,オリジナルRDエリア名を指定します。sort文には,ソート用ワークディレクトリ名/tmp/sortwork/とソート用バッファサイズ512を指定します。
HiRDB/パラレルサーバの場合には,インデクスが格納されているサーバ名bes1をunload文およびsort文に指定します。
- pdrorgコマンドの実行例
pdrorg -k rorg -t TAB1 -r RD01 -q 0 -l n /usr/rorg01
RDエリアRD01に格納されている表TAB1を再編成します。ここでは,オリジナルRDエリア(RD01)に格納されているTAB1に対して,/usr/rorg01ファイルに記述された上記に示すunload,indexおよびsort文を実行し,再編成します。世代番号は-qオプションに指定されています。-lオプションでは,ログレス実行モード(n)を指定しています。
pdrorgコマンドでの表の再編成は,DBA権限保持者または表の所有者がHiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdrorgコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
(b) バックアップファイルの取得
再編成を実施したオリジナルRDエリアのバックアップファイルを取得します。バックアップファイルは,pdcopyコマンドで取得します。
- pdcopyコマンドの実行例
pdcopy -m /hirdb/rdarea/rdmast/rdmast01 -M r -b /usr/hirdb/pdcopy/backup02 -r RD01,RD02 -q 0 -p /usr/hirdb/pdcopy/list02
-mオプションには,マスタディレクトリ用RDエリアの先頭のHiRDBファイル名を指定しています。-Mオプションには,バックアップ取得モードとして,「バックアップ取得時にバックアップ取得対象のRDエリアを参照できるが,更新はできないモード(r)」を指定します。
-rオプションには,バックアップ対象のRDエリア名を指定します。ここでは,再編成を実施したレプリカRDエリアのバックアップの取得を指定します。レプリカRDエリアの指定には,-rオプションと-qオプションを使用します。-rオプションにはオリジナルRDエリア名RD01,RD02を指定し,-qオプションに取得対象の世代番号0を指定します。
バックアップ先のファイル名は,-bオプションに指定します。-pオプションには,pdcopyコマンドの処理結果リストの出力先を指定しています。
pdcopyコマンドは,HiRDB管理者が,HiRDBの稼働中に実行します。複数のサーバマシンでHiRDBシステムを構成している場合,システムマネジャがあるサーバマシンで実行します。pdcopyコマンドについては,マニュアル「HiRDB Version 9 コマンドリファレンス」を参照してください。
バックアップの取得方法については,マニュアル「HiRDB Version 9 システム運用ガイド」を参照してください。
また,pdcopyコマンドの実行前に,pdlogswap -d sys -wコマンドを実行してシステムログファイルをスワップしてください。
(4) カレントRDエリアをオリジナルRDエリアに変更
再編成が完了したオリジナルRDエリアを,カレントRDエリアに戻して運用を再開します。
(a) カレントRDエリアの変更
カレントRDエリアをオリジナルRDエリアに戻します。カレントRDエリアの変更には,HiRDBのpddbchgコマンドを使用します。
- pddbchgコマンドの実行例
pddbchg -r RD01,RD02 -q 0
-rオプションにオリジナルRDエリア名RD01,RD02を指定し,-qオプションに新しくカレントとなるRDエリアの世代番号0を指定します。
(b) レプリカRDエリアの閉塞かつクローズ化
オリジナルRDエリアで運用を再開するため,運用に必要のないレプリカRDエリアを閉塞かつクローズ状態にします。閉塞かつクローズ状態には,HiRDBのpdholdコマンドで設定します。
- pdholdコマンドの実行例
pdhold -r RD01,RD02 -q 1 -c
-rオプションで閉塞するRDエリアのオリジナル名称RD01,RD02を指定し,-qオプションで閉塞するRDエリアの世代番号 1を指定します。
(5) ペアボリュームの生成
再編成後のオリジナルRDエリアで運用が再開できたら,オリジナルRDエリアを正ファイルとしてレプリカRDエリアとのペアボリュームを生成しておきます。ペアボリュームの生成は,ミラーリング機能を使って実現します。