4.4 オンライン業務と更新バッチ処理の同時実行
4.4.2 制限事項
オンライン業務と更新バッチ処理の同時実行を行う上での制限事項について説明します。
(1) 更新バッチ処理の条件
オンライン業務と同時に実行する更新バッチ処理が,オンライン業務で操作するデータ(行)と重複する データを更新する場合,更新列だけを反映する追い付き反映処理を使用する必要があります。このため pdorbegin コマンドに-e オプションを指定して実行します。
オンライン業務と同時に実行する更新バッチ処理と,オンライン業務で操作するデータ(行)が重複しない 場合は,更新列だけの反映処理を使用する必要はありません。
更新列だけの反映処理を使用しないで,更新バッチ処理での更新とオンライン業務の更新するデータ(行)
が重複した場合は,バッチの更新内容は保証できません。
更新バッチ処理の後にオンライン業務を反映した場合の結果を次の表に示します。
表 4‒6 更新列だけの反映処理を使用しない場合の更新バッチ処理後にオンライン業務を反映した結果
更新バッチ処理 オンライン業務
処理内容 行の重複 INSERT 文 DELETE 文 UPDATE 文
INSERT 文 なし ○ ○ ○
あり ×
(ユニークエラー)
△※3
(削除されます)
△※1※3
DELETE 文 なし ○ ○ ○
あり △※4 × ×
更新バッチ処理 オンライン業務
処理内容 行の重複 INSERT 文 DELETE 文 UPDATE 文
(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 ○ ○ △※1
(上書き
バッチ処理 オンライン業務(UPDATE 文)
ADD 指定 DELETE 指定 SET 指定
(DELETE される)
(凡例)
○:反映処理は正常に実行されます。
△:バッチ業務実行後オンライン業務が実行された結果となります。
×:追い付き反映処理でエラーとなります。
条件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 などを実行して,データベースの整合性を回復します。