4.2.3 注意事項
更新可能なオンライン再編成を実施する上での注意事項について説明します。
- 〈この項の構成〉
(1) 運用前の注意事項
更新可能なオンライン再編成の運用前に注意することについて説明します。
(a) RDエリアの管理と再編成のタイミング
RDエリアの管理と再編成のタイミングを次に示します。
-
関連するRDエリア※は同時にペアボリューム解除するボリューム内で管理して,同じタイミングで更新可能なオンライン再編成を行う必要があります。
-
更新可能なオンライン再編成の対象RDエリア内に「更新可能なオンライン再編成を実施できない表」で示した表は含まれてはいけません。
-
更新可能なオンライン再編成の対象RDエリアと同じHiRDBファイルシステム領域内に格納しているRDエリアに対しては,次のどちらかを実施してください。
-
同じタイミングで更新可能なオンライン再編成を行う。
-
ペアボリューム解除の間だけ,参照可能バックアップ閉塞または更新可能バックアップ閉塞にする。
-
-
レプリカRDエリアのデータをオリジナルRDエリアにコピーして障害回復を行う際に,副から正へのボリュームコピーが使用できるのは,次の場合だけです。
-
ボリューム内のすべてのRDエリアに対して更新可能なオンライン再編成を行っている。
ボリューム内に更新可能なオンライン再編成を行なっていないRDエリアを含む場合,オンライン再編成を行っているRDエリアのデータだけをコピーする必要があります。コピーは,pdcopy,pdrstr,pdfbkup,pdfrstr,またはpdrorgで行ってください。
-
- 注※
-
関連するRDエリアを次の表に示します。
表4‒3 関連するRDエリア 対象のRDエリア
関連するRDエリア
非分割表を格納するRDエリア
-
対象のRDエリア内の表に定義されているインデクスを格納するRDエリア
-
対象のRDエリア内の表に定義されているLOB列,抽象データ型の列,プラグインインデクスを格納するRDエリア
分割表を格納するRDエリア
-
対象のRDエリア内の表に定義されている非分割インデクスを格納する同じサーバ内のRDエリア
-
対象のRDエリア内の表に対応する分割インデクスを格納する同じサーバ内のRDエリア
-
対象のRDエリア内の表に定義されているLOB列,抽象データ型の列,プラグインインデクスを格納する同じサーバ内のRDエリア
非分割インデクスを格納するRDエリア
-
非分割インデクスが定義されているサーバ内分割表を格納しているRDエリア
-
(b) 圧縮表の追い付き反映処理をする場合
BINARY型の圧縮列がある表を追い付き反映処理する場合,データ圧縮時に付加情報が追加されるため,圧縮状況によっては圧縮前のデータサイズより大きくなることがあります。その場合,追い付き反映処理でデータを伸張するため,性能が劣化します。BINARY型の圧縮列がある表を追い付き反映処理する場合,追い付き反映処理時にデータを伸張しないように,次の条件を満たす表定義にすることを推奨します。
圧縮列の定義長(単位:バイト)≧ (↑圧縮列に格納する最大データ長÷表定義時の圧縮分割サイズ↑×8)+圧縮列に格納する最大データ長
複数の圧縮列がある場合,各列が上記条件を満たすようにしてください。
圧縮表については,マニュアル「HiRDB システム導入・設計ガイド」を参照してください。
(2) 運用中の注意事項
更新可能なオンライン再編成の運用中に注意することについて説明します。
(a) 複数RDエリアを再編成するときの追い付き反映コマンドの実行タイミング
複数のRDエリアを対象にデータベースの再編成を実行する場合,指定したすべてのRDエリアの再編成処理が終わるまで追い付き反映コマンドは実行しないでください。
複数のRDエリアを対象にデータベースの再編成を実行する場合は,再編成処理に掛かる時間が同じくらいのRDエリアを選択することをお勧めします。
(c) 追い付き反映処理に掛かる時間
更新可能なオンライン再編成を適用する表に対して更新する場合,次の条件のどれかを満たすとき,オリジナルRDエリアに対する追い付き反映処理に時間が掛かります。
-
RDエリアにSGMLTEXT型の列が含まれる
-
XML型の列にn-gramインデクスが定義されている
-
FREEWORD型の列にIXFREEWORD型インデクスが定義されている
-
RDエリアにユニークインデクスが複数定義されている
-
RDエリアのユニークキーを更新する
(d) 追い付き反映処理時のトランザクション量
レプリカRDエリアに対するトランザクション処理が多く,追い付き反映コマンドが時間内に終了しない場合は,トランザクション処理量を制限してから追い付き反映コマンドを実行する必要があります。
(e) HiRDB再開始直後の追い付き反映コマンド(pdorend)再実行
追い付き反映コマンド(pdorend)実行中にHiRDBが異常終了した場合,HiRDBを再開始した直後に追い付き反映コマンド(pdorend)を再実行すると,ユニークキーの重複エラーが発生することがあります。この場合は,pdls -d trnコマンドでトランザクションのロールバック処理の完了を確認してから,追い付き反映コマンド(pdorend)を再実行してください。
(f) 共用RDエリアまたは共用RDエリア内の表を対象とした処理実行
処理対象のRDエリアに共用RDエリアが含まれる場合,または処理対象の表が共用RDエリアに含まれている場合,すべてのバックエンドサーバで処理が行われます。次のコマンドはサーバを指定(-s)しないで実行する必要があります。
-
データベース静止化コマンド(pdorbegin)
-
データベース切り替えコマンド(pdorchg)
-
追い付き反映静止化コマンド(pdorend)
(g) 共用RDエリアの更新可能なオンライン再編成閉塞状態の解除
通常,共用RDエリアを含むRDエリアを処理する場合,すべてのバックエンドサーバが対象となり,サーバを指定(-s)しないでコマンドを実行します。しかし,オンライン再編成中,一部のバックエンドサーバに障害が発生した場合,稼働しないバックエンドサーバがあるため,オンライン再編成処理を取り消せないときがあります。このようなときは,コマンドでサーバを指定(-s)して,それぞれのバックエンドサーバの閉塞状態を解除してください。
-
稼働中のバックエンドサーバの閉塞を解除します(-sオプション指定)。
-
障害が発生したバックエンドサーバの障害を取り除きます。
-
障害を取り除いたバックエンドサーバの閉塞を解除します(-sオプション指定)。
(h) サーバ間で参照制約関係を持つ表が存在する場合の再編成
参照表または被参照表を格納するRDエリアは,世代を合わせて運用する必要があります。RDエリア内で複数のサーバに参照制約関係を持つ表を格納している場合,それらのサーバを同時に更新可能なオンライン再編成の対象にしてください。
(3) その他の注意事項
(a) オンライン再編成閉塞状態でのHiRDBの停止
オンライン再編成閉塞状態のRDエリアがあると,HiRDBは正常停止やサーバ単独停止ができません(計画停止はできます)。正常停止やサーバ単独停止を行いたい場合は,追い付き反映コマンドを正常終了するか,データベース静止化コマンドですべてのRDエリアのオンライン再編成閉塞状態を解除する必要があります。
(b) 追い付き反映処理と系切り替え
追い付き反映コマンド(pdorend)実行中に系切り替えが発生すると,コマンドは異常終了します。追い付き反映が終了しないと,反映に使用する更新ログが見積もりを超えてログが出力されることがあります。
系切り替えが発生した場合は,できるだけ早く追い付き反映コマンドを再実行してください。
(c) RDエリア名の変更
更新可能なオンライン再編成の準備フェーズで関連RDエリアの情報を取得したあとは,取得した関連RDエリアの名称を変更しないでください。関連RDエリアの情報を取得したあとに名称を変更し,更新可能なオンライン再編成のコマンドを実行した場合に"指定したRDエリア名称がありません"のエラーになったときは,コマンドに指定したRDエリア名の修正が漏れている可能性があります。エラーになった場合は,次の図に示す運用手順および実行例を参考に,コマンドに指定したRDエリア名を修正し,再度コマンドを実行してください。
|
- 注※1
-
図「RDエリア名を変更する場合の実行例」のケース1を参照してください。
- 注※2
-
図「RDエリア名を変更する場合の実行例」のケース2を参照してください。
図4‒3 RDエリア名を変更する場合の運用手順(2/2) - 注※1
-
次の図のケース3を参照してください。
図4‒4 RDエリア名を変更する場合の実行例 - [実行例の説明]
-
更新可能なオンライン再編成対象のRDエリアがRDエリア1,RDエリア2,RDエリア3,およびRDエリア4であったが,RDエリア2をRDエリア7に変更しています。
- ケース1:
-
-
運用手順の開始以降から(1)までの間に,RDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
pdrdrefls -e org -r RDエリア1,RDエリア2 -l -d','
-
RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
KFPT02019-E Pdrdrefls:specified value not found in system,
RDAREA ="RDエリア2"
-
pdrdreflsコマンドのRDエリア名称を修正して再実行してください。
pdrdrefls -e org -r RDエリア1,RDエリア7 -l -d','
-
コマンドを再実行すると,次の関連RDエリアの情報が取得されます。
"RDエリア1","RDエリア7","RDエリア3","RDエリア4"
-
- ケース2:
-
-
運用手順の(2)から(3)までの間にRDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
pdorcheck -r RDエリア1,RDエリア2,RDエリア3,RDエリア4
-
RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
KFPT02019-E Pdorcheck:specified value not found in system,
RDAREA="RDエリア2"
-
pdorcheckのRDエリア名称を変更して再実行してください。
pdorcheck -r RDエリア1,RDエリア7,RDエリア3,RDエリア4
-
コマンドを再実行すると次のメッセージが出力されます。
KFPT02022-I Pdorcheck:all resources conformed to Online DB
Reorganization
(すべてのRDエリアがオンライン再編成の適用条件を満たしています)
-
- ケース3:
-
-
運用手順の(5)から(6)までの間にRDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
pdorbegin -r RDエリア1,RDエリア2,RDエリア3,RDエリア4
-
RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
KFPH00142-E pdorbegin command failed due to specified name
not found, RDAREA = RDエリア2
-
RDエリア2→RDエリア7の名称変更のエラーであるため,pdorbegin -uを実行し,いったんデータベースの静止化を取り消します。
pdorbegin -r RDエリア1,RDエリア3,RDエリア4 -u
-
pdorbeginのRDエリア名称を変更して再実行してください。
pdorbegin -r RDエリア1,RDエリア7,RDエリア3,RDエリア4
-
コマンドを再実行すると次のメッセージが出力されます。
KFPH27044-I pdorbegin command started
KFPH00130-I RDAREA held(org), RDAREA = "RDエリア1"
KFPH00130-I RDAREA held(org), RDAREA = "RDエリア1_GN1"
:
省略
:
KFPH00130-I RDAREA held(org), RDAREA = "RDエリア4"
KFPH00130-I RDAREA held(org), RDAREA = "RDエリア4_GN1"
KFPH00110-I pdorbegin command completed
KFPH27045-I pdorbegin command ended, return code = 0
-
関連RDエリアの情報を取得したあとにRDエリア名を変更し,更新可能なオンライン再編成の追い付き反映処理で対象RDエリアを誤って指定した場合の例を次の図に示します。また,その場合のRDエリアの回復要否および回復方法を表「RDエリアの回復要否および回復方法」に示します。
|
|
更新可能なオンライン再編成の対象かどうか |
RDエリア名※ |
回復方法 |
|
---|---|---|---|
例の(4)-2を実行しない場合 |
例の(4)-2を実行する場合 |
||
対象RDエリアである |
RDエリア1,RDエリア4 |
回復不要 (最初から対象RDエリアであり,正しく運用されているため) |
回復不要 (最初から対象RDエリアであり,正しく運用されているため) |
対象RDエリアの予定であったが,対象外とした |
RDエリア2(RDエリア7),RDエリア5(RDエリア8) |
回復不要 (バッチ更新がない場合,副系DBをAPで更新し,追い付き反映で正系DBに反映されるが,直接正系DBがAPによって更新されていて,最終的にはDBの内容が同じになるため) |
回復要 更新前のバックアップがある場合:
バックアップがない場合: 更新可能なオンライン再編成の対象外となったRDエリア(RDエリア2(RDエリア7),RDエリア5(RDエリア8))にある表のうち,バッチ更新とAP更新で同一行が更新されている行を,バッチ更新の内容とAP更新の内容を基にSQLで修正してください。 |
対象外のRDエリアであったが,対象とした |
RDエリア3(RDエリア2),RDエリア6(RDエリア5) |
回復不要(正系DBをAPで直接更新する予定であったが,副系DBをAPで更新し,追い付き反映処理で正系DBに反映され,最終的にはDBの内容が同じになるため) |
回復不要(更新可能なオンライン再編成の対象外の予定であり,バッチ更新されていなければ,左記の理由によって最終的にはDBの内容が同じになるため) |
- 注※
-
対象となるRDエリアを誤って指定した場合の例で使用しているRDエリア名です。括弧内は名称変更後のRDエリア名を示しています。