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

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

4.4.2 制限事項

オンライン業務と更新バッチ処理の同時実行を行う上での制限事項について説明します。

<この項の構成>
(1) 更新バッチ処理の条件
(2) 追い付き反映処理でのエラーのスキップ

(1) 更新バッチ処理の条件

オンライン業務と同時に実行する更新バッチ処理が,オンライン業務で操作するデータ(行)と重複するデータを更新する場合,更新列だけを反映する追い付き反映処理を使用する必要があります。このためpdorbeginコマンドに-eオプションを指定して実行します。

オンライン業務と同時に実行する更新バッチ処理と,オンライン業務で操作するデータ(行)が重複しない場合は,更新列だけの反映処理を使用する必要はありません。

更新列だけの反映処理を使用しないで,更新バッチ処理での更新とオンライン業務の更新するデータ(行)が重複した場合は,バッチの更新内容は保証できません。

更新バッチ処理の後にオンライン業務を反映した場合の結果を次の表に示します。

表4-6 更新列だけの反映処理を使用しない場合の更新バッチ処理後にオンライン業務を反映した結果

更新バッチ処理 オンライン業務
処理内容 行の重複 INSERT文 DELETE文 UPDATE文
INSERT文 なし
あり ×
(ユニークエラー)
※3
(削除されます)
※1※3
DELETE文 なし
あり ※4
(INSERTされます)
×
(NOT FOUND)
×
(NOT FOUND)
UPDATE文 なし
あり ×
(ユニークエラー)
※3
(DELETEされます)
※1※2※3
キー値更新 なし
あり ×
(ユニークエラー)
×
(NOT FOUND)
×
(NOT FOUND)
(ユニークエラー)

(凡例)
○:反映処理は正常に実行されます。
△:オンライン業務後の結果になります。
×:追い付き反映処理でエラーになります。

注※1
結果を保証できません。オンライン業務で更新した行の列以外の列がオンライン業務での更新行のデータで上書きされることがあります。

注※2
繰返し列の場合の結果については,表4-7を参照してください。

注※3
オンライン業務で更新した内容がロールバックされると,バッチ業務の更新が無効(オンライン業務の更新前に戻される)となる場合があります。

注※4
オンライン業務で更新した内容がロールバックされると,更新バッチ処理の更新が有効となります。

表4-7 繰返し列の場合の更新バッチ処理後にオンライン業務を反映した結果

バッチ処理 オンライン業務(UPDATE文)
ADD指定 DELETE指定 SET指定
UPDATE文 ADD指定 条件1 条件2 ※1※2 ※1※2
※1※2 ×
(最大要素数超過)
DELETE指定 ※1※2 条件3 条件4 条件3 条件4
×
(該当要素なし)
※1※2 ×
(該当要素なし)
※1※2
SET指定 条件5 条件6 条件7 同一要素更新あり 条件8 同一要素更新なし 同一要素更新あり
※1※3 ※1※3 ※1
(DELETEされる)
※1
(上書きUPDATE)

(凡例)
○:反映処理は正常に実行されます。
△:バッチ業務実行後オンライン業務が実行された結果となります。
×:追い付き反映処理でエラーとなります。

条件1
バッチ業務で追加後の要素数とオンライン業務で追加する要素数を加えた数が,最大要素数を超えない場合

条件2
バッチ業務で追加後の要素数とオンライン業務で追加する要素数を加えた数が,最大要素数を超える場合

条件3
オンライン業務の対象となる要素で,存在しない要素がある場合

条件4
オンライン業務の対象となる要素がすべて存在する場合

条件5
バッチで更新した要素番号以下の要素番号から要素を追加した場合

条件6
バッチで更新した要素番号より大きい要素番号から要素を追加した場合

条件7
バッチで更新した要素番号より小さいの要素番号の要素を削除した場合

条件8
バッチで更新した要素番号より大きい要素番号の要素を削除した場合

注※1
結果を保証できません。

注※2
バッチ業務での,UPDATE ADDまたはUPDATE DELETEによって,要素数の増減があるとオンライン業務での実行結果が期待した要素に対して実行されない可能性があります。

注※3
オンライン業務でUPDATE ADDまたはUPDATE DELETEを行うと,バッチ業務で更新した要素の位置がずれてしまう可能性があります。

更新列だけを反映する追い付き反映処理は,オンライン業務と更新バッチ処理の実行が,更新バッチ処理で更新(UPDATE)した行とオンライン業務で更新(UPDATE)した行が重複した行でも更新する列が異なる場合,バッチの更新内容を保証する機能です。

オンライン業務で行更新(ROW更新)またはFIX表の列更新で全列を更新した場合は,実際に列の値が更新された列だけオリジナルRDエリアの表の更新を行います。オンライン業務でSET句またはDELETE句で繰返し列にない要素番号を指定したUPDATE文を実行した場合,存在しなかった要素の更新は行いません。オンライン業務の更新種別,更新対象および追い付き反映処理の更新対象列を表4-8に,繰返し列の場合のオンライン業務の更新対象要素,および追い付き反映処理の更新対象を表4-9に示します。

表4-8 オンライン業務の更新種別,更新対象および追い付き反映処理の更新対象列

オンライン業務 追い付き反映処理の更新対象列
表種別 更新種別 更新対象列
FIX表 行更新(ROW) 更新前後で異なる値の列
列更新 全列更新 更新前後で異なる値の列
上記以外 UPDATE文で更新対象に記述した行
非FIX表 行更新(ROW)
列更新 全列更新 UPDATE文で更新対象に記述した列。ただし,繰返し列の場合,UPDATE文に列を記述しても,要素の更新がない列は更新対象外です。
上記以外

(凡例)
−:該当しません。

表4-9 繰返し列の場合のオンライン業務の更新対象要素,および追い付き反映処理の更新対象

オンライン業務でのUPDATE SETまたはUPDATE DELETEの更新対象要素 追い付き反映処理の更新対象
存在する 更新対象
存在しない 更新対象外

更新バッチ処理で更新した行とオンライン業務で更新した行が同じ行で,なおかつ,同じ列の更新を行った場合,更新内容は保証できません。更新バッチ処理の更新対象とオンライン業務の更新対象および更新結果を次の表に示します。

表4-10 更新バッチ処理とオンライン業務の更新対象および更新結果

バッチ処理で更新の行とオンライン業務で更新の行 バッチ処理で更新の列とオンライン業務で更新の列 更新結果
異なる
重複している 異なる
重複している ×

(凡例)
○:保証します。
×:保証しません。
−:該当しません。

更新列だけの反映処理を使用する場合は,pdorbeginコマンドに-eオプションを指定して実行してください。

(2) 追い付き反映処理でのエラーのスキップ

追い付き反映処理で論理的なエラーが発生する場合,pdorend(追い付き反映処理コマンド)に-fオプションを指定して実行します。-fオプションでは追い付き反映処理の制御文が指定でき,ここで反映エラースキップを指定することで,エラーが生じたデータを無視して,追い付き反映処理を続行できます。エラーとなったデータ情報は,制御ファイルで指定したスキップ情報ファイルに出力します。

追い付き反映処理でのエラーをスキップする機能の概要を次の図に示します。

図4-13 追い付き反映処理でのエラーのスキップ機能

[図データ]

反映をスキップしたデータを,データベースに反映するかどうかはユーザが判断します。反映する場合はSQLなどを実行して,データベースの整合性を回復します。