![]() 前へ |
![]() 次へ |
コミット計画とオペレーティング・モードの組合せによって、マッピング動作が決定します。表: オペレーティング・モードの有効なコミット計画は、選択できる有効な組合せを示しています。
オペレーティング・モードの有効なコミット計画
| オペレーティング・モード | 自動相関コミット | 自動コミット |
|---|---|---|
|
セット・ベース |
有効(Valid) |
有効(Valid) |
|
行ベース |
有効(Valid) |
有効(Valid) |
|
行ベース(ターゲットのみ) |
適用不可 |
有効(Valid) |
相関コミットは、行ベース(ターゲットのみ)に対して適用できません。このオペレーティング・モードでは、カーソルをターゲットのできるだけ近くに配置するように定義されています。この結果、ほとんどの場合、各SELECT文に対するターゲットは1つのみとなり、複数ターゲットに対してデータをコミットする目的が失われます。行ベース(ターゲットのみ)と相関コミットの組合せでマッピングを設計した場合、マッピングは実行されますが、相関コミットは実行されません。
各オペレーティング・モードとコミット計画の組合せがマッピングに与える影響を理解するために、マッピングを考慮してください。ソース表からのデータが1,000個の新規行であると仮定します。マッピングが正常に実行された場合は、各ターゲットに1,000行がロードされます。このマッピングでTarget_2への100番目の新規行のロードに失敗した場合は、コミット頻度や最大エラー数など他の構成設定からの影響を無視すると、次の結果が得られます。
セット・ベース/相関コミット: マッピングにエラーが1つでもあると、すべてのデータがロールバックされます。Target_2への挿入中にエラーが発生した場合、その表のエラーがレポートされ、行はロードされません。Target_1に挿入済のすべての行がロールバックされ、Target_3には行がロードされません。どのターゲット表にも行が追加されません。エラーの詳細には、Target_2へのロード中に発生したエラーのみがレポートされます。
行ベース/相関コミット: 各行が最初の行から個別に評価され、3つのターゲットすべてにロードされます。行のロードは、行100のTarget_2へのロード・エラーが発生するまで続行されます。エラーがレポートされ、行はロードされません。Target_1に挿入済の行100がロール・バックされ、Target_3には行100がロードされません。その後、Target_1への行101のロードが再開され、残りの行のロードが続行されます。他のエラーが発生しないと、各ターゲットに999個の新規行が挿入されて、マッピングが完了します。ソース行は、これらのターゲットに正確に反映されます。
セット・ベース/自動コミット: Target_2への挿入中にエラーが発生した場合、行はロードされず、その表のエラーがレポートされます。Target_3への行の挿入は続行されますが、Target_1の行はロールバックされません。他のエラーが発生しないと、Target_2に関する1つのエラー・メッセージがレポートされて、マッピングは完了します。Target_2に行は挿入されず、Target_1とTarget_3に1,000行ずつ挿入されます。ソース行は、これらのターゲットに正確に反映されません。
行ベース/自動コミット: 各行が最初の行から個別に評価され、ターゲットにロードされます。行のロードは、Target_2に行100をロードする際にエラーが発生し、そのエラーがレポートされるまで続行されます。Target_1の行100はロールバックされず、Target_3には行100が挿入されます。その後、残りの行のロードが続行されます。他のエラーが発生しないと、Target_2に999行が挿入されて、マッピングは完了します。他のターゲットには1,000行がそれぞれ挿入されます。ソース行は、これらのターゲットに正確に反映されません。