インナレプリカ機能 HiRDB Staticizer Option Version 8

[目次][索引][前へ][次へ]

4.2.3 注意事項

更新可能なオンライン再編成を実施する上での注意事項について説明します。

<この項の構成>
(1) 運用前の注意事項
(2) 運用中の注意事項
(3) その他の注意事項

(1) 運用前の注意事項

更新可能なオンライン再編成の運用前に注意することについて説明します。

(a) RDエリアの管理と再編成のタイミング

関連するRDエリアは同一ボリューム内で管理して,同じタイミングで更新可能なオンライン再編成処理を行う必要があります。表の設計時には十分に考慮してください。

同一ボリューム内に再編成を行わないRDエリアが含まれていてもかまいませんが,対象RDエリア内に「4.2.2(1) 更新可能なオンライン再編成を実施できない表」で示した表は含まれてはいけません。更新可能なオンライン再編成の対象RDエリアに定義されているすべての表に対する追い付き処理を実行します。

注※
関連するRDエリアを次の表に示します。

表4-3 関連するRDエリア

対象のRDエリア 関連するRDエリア
非分割表を格納するRDエリア
  • 対象のRDエリア内の表に定義されているインデクスを格納するRDエリア
  • 対象のRDエリア内の表に定義されているLOB列,抽象データ型の列,プラグインインデクスを格納するRDエリア
分割表を格納するRDエリア
  • 対象のRDエリア内の表に定義されている非分割インデクスを格納する同じサーバ内のRDエリア
  • 対象のRDエリア内の表に対応する分割インデクスを格納する同じサーバ内のRDエリア
  • 対象のRDエリア内の表に定義されているLOB列,抽象データ型の列,プラグインインデクスを格納する同じサーバ内のRDエリア
非分割インデクスを格納するRDエリア
  • 非分割インデクスが定義されているサーバ内分割表を格納しているRDエリア

(2) 運用中の注意事項

更新可能なオンライン再編成の運用中に注意することについて説明します。

(a) 複数RDエリアを再編成するときの追い付き反映コマンドの実行タイミング

複数のRDエリアを対象にデータベースの再編成を実行する場合,指定したすべてのRDエリアの再編成処理が終わるまで追い付き反映コマンドは実行しないでください。

複数のRDエリアを対象にデータベースの再編成を実行する場合は,再編成処理に掛かる時間が同じくらいのRDエリアを選択することをお勧めします。

(b) 複数の再編成処理の並列実行

更新可能なオンライン再編成を開始すると,追い付き反映処理が終了するまで同じサーバ内のほかのRDエリアに更新可能なオンライン再編成を実行できません。

(c) 追い付き反映処理に掛かる時間

更新可能なオンライン再編成を適用する表に対して更新する場合,次の条件のどれかを満たすとき,オリジナルRDエリアに対する追い付き反映処理に時間が掛かります。

(d) 追い付き反映処理時のトランザクション量

レプリカRDエリアに対するトランザクション処理が多く,追い付き反映コマンドが時間内に終了しない場合は,トランザクション処理量を制限してから追い付き反映コマンドを実行する必要があります。

(e) HiRDB再開始直後の追い付き反映コマンド(pdorend)再実行

追い付き反映コマンド(pdorend)実行中にHiRDBが異常終了した場合,HiRDBを再開始した直後に追い付き反映コマンド(pdorend)を再実行すると,ユニークキーの重複エラーが発生することがあります。この場合は,pdls -d trnコマンドでトランザクションのロールバック処理の完了を確認してから,追い付き反映コマンド(pdorend)を再実行してください。

(f) 共用RDエリアまたは共用RDエリア内の表を対象とした処理実行

処理対象のRDエリアに共用RDエリアが含まれる場合,または処理対象の表が共用RDエリアに含まれている場合,すべてのバックエンドサーバで処理が行われます。次のコマンドはサーバを指定(-s)しないで実行する必要があります。

(g) 共用RDエリアの更新可能なオンライン再編成閉塞状態の解除

通常,共用RDエリアを含むRDエリアを処理する場合,すべてのバックエンドサーバが対象となり,サーバを指定(-s)しないでコマンドを実行します。しかし,オンライン再編成中,一部のバックエンドサーバに障害が発生した場合,稼働しないバックエンドサーバがあるため,オンライン再編成処理を取り消せないときがあります。このようなときは,コマンドでサーバを指定(-s)して,それぞれのバックエンドサーバの閉塞状態を解除してください。

  1. 稼働中のバックエンドサーバの閉塞を解除します(-sオプション指定)。
  2. 障害が発生したバックエンドサーバの障害を取り除きます。
  3. 障害を取り除いたバックエンドサーバの閉塞を解除します(-sオプション指定)。
(h) サーバ間で参照制約関係を持つ表が存在する場合の再編成

参照表または被参照表を格納するRDエリアは,世代を合わせて運用する必要があります。RDエリア内で複数のサーバに参照制約関係を持つ表を格納している場合,それらのサーバを同時に更新可能なオンライン再編成の対象にしてください。

(3) その他の注意事項

(a) オンライン再編成閉塞状態でのHiRDBの停止

オンライン再編成閉塞状態のRDエリアがあると,HiRDBは正常停止やサーバ単独停止ができません(計画停止はできます)。正常停止やサーバ単独停止を行いたい場合は,追い付き反映コマンドを正常終了するか,データベース静止化コマンドですべてのRDエリアのオンライン再編成閉塞状態を解除する必要があります。

(b) 追い付き反映処理と系切り替え

追い付き反映コマンド(pdorend)実行中に系切り替えが発生すると,コマンドは異常終了します。追い付き反映が終了しないと,反映に使用する更新ログが見積もりを超えてログが出力されることがあります。

系切り替えが発生した場合は,できるだけ早く追い付き反映コマンドを再実行してください。

(c) RDエリア名の変更

更新可能なオンライン再編成の準備フェーズで関連RDエリアの情報を取得したあとは,取得した関連RDエリアの名称を変更しないでください。関連RDエリアの情報を取得したあとに名称を変更し,更新可能なオンライン再編成のコマンドを実行した場合に"指定したRDエリア名称がありません"のエラーになったときは,コマンドに指定したRDエリア名の修正が漏れている可能性があります。エラーになった場合は,次の図に示す運用手順および実行例を参考に,コマンドに指定したRDエリア名を修正し,再度コマンドを実行してください。

図4-2 RDエリア名を変更する場合の運用手順(1/2)

[図データ]

注※1
図4-4のケース1を参照してください。

注※2
図4-4のケース2を参照してください。

図4-3 RDエリア名を変更する場合の運用手順(2/2)

[図データ]

注※1
図4-4のケース3を参照してください。

図4-4 RDエリア名を変更する場合の実行例

[図データ]

[実行例の説明]
更新可能なオンライン再編成対象のRDエリアがRDエリア1,RDエリア2,RDエリア3,およびRDエリア4であったが,RDエリア2をRDエリア7に変更しています。
ケース1:
  1. 運用手順の開始以降から(1)までの間に,RDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
    pdrdrefls -e org -r RDエリア1,RDエリア2 -l -d','
  2. RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
    KFPT02019-E Pdrdrefls:specified value not found in system,
    RDAREA ="RDエリア2"
  3. pdrdreflsコマンドのRDエリア名称を修正して再実行してください。
    pdrdrefls -e org -r RDエリア1,RDエリア7 -l -d','
  4. コマンドを再実行すると,次の関連RDエリアの情報が取得されます。
    "RDエリア1","RDエリア7","RDエリア3","RDエリア4"
ケース2:
  1. 運用手順の(2)から(3)までの間にRDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
    pdorcheck -r RDエリア1,RDエリア2,RDエリア3,RDエリア4
  2. RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
    KFPT02019-E Pdorcheck:specified value not found in system,
    RDAREA="RDエリア2"
  3. pdorcheckのRDエリア名称を変更して再実行してください。
    pdorcheck -r RDエリア1,RDエリア7,RDエリア3,RDエリア4
  4. コマンドを再実行すると次のメッセージが出力されます。
    KFPT02022-I Pdorcheck:all resources conformed to Online DB
    Reorganization
    (すべてのRDエリアがオンライン再編成の適用条件を満たしています)
ケース3:
  1. 運用手順の(5)から(6)までの間にRDエリア名称2をRDエリア名称7に変更し,次のコマンドを実行しました。
    pdorbegin -r RDエリア1,RDエリア2,RDエリア3,RDエリア4
  2. RDエリア名称を変更したため,RDエリア2が存在しないエラーとなります。
    KFPH00142-E pdorbegin command failed due to specified name
    not found, RDAREA = RDエリア2
  3. RDエリア2→RDエリア7の名称変更のエラーであるため,pdorbegin -uを実行し,いったんデータベースの静止化を取り消します。
    pdorbegin -r RDエリア1,RDエリア3,RDエリア4 -u
  4. pdorbeginのRDエリア名称を変更して再実行してください。
    pdorbegin -r RDエリア1,RDエリア7,RDエリア3,RDエリア4
  5. コマンドを再実行すると次のメッセージが出力されます。
    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エリアの回復要否および回復方法を表4-4に示します。

図4-5 対象となるRDエリアを誤って指定した場合の例(1/2)

[図データ]

図4-6 対象となるRDエリアを誤って指定した場合の例(2/2)

[図データ]

表4-4 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エリアだけ,バッチ更新およびAP更新ができる場合
    更新前のバックアップファイルから,更新可能なオンライン再編成の対象外としたRDエリア(RDエリア2(RDエリア7),RDエリア5(RDエリア8))をバックアップ取得時点の状態に戻し,これらのRDエリア(RDエリア2(RDエリア7),RDエリア5(RDエリア8))に対してだけ,バッチ更新およびAP更新を再度実行してください。
  • 更新可能なオンライン再編成の運用を間違えたRDエリアだけ,バッチ更新およびAP更新ができない場合
    すべてのRDエリアを更新前のバックアップ取得時点に戻し,更新可能なオンライン再編成の対象RDエリアを修正し,バッチ更新およびAP更新を再度実行してください。
バックアップがない場合:
更新可能なオンライン再編成の対象外となった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エリア名を示しています。