![]() 前へ |
![]() 次へ |
次の制約管理パラメータを構成します。
例外表名: 再有効化中に外部キー制約に違反したすべての行が、指定の例外表に記録されます。ロード前後には、この表の自動切捨ては実行されません。制約違反はランタイム監査エラー表にもロードされます。
SQLおよびPL/SQLロードの場合、例外表を指定しなければ、無効な行はデフォルト表領域にある一時表にロードされてから、ランタイム監査エラー表にロードされます。ロードが終了すると、表が削除されます。
SQL*Loaderのダイレクト・パス・ロードを使用している場合は、例外表を指定する必要があります。詳細は、SQL*Loaderのマニュアルを参照してください。
制約の有効化: このオプションを選択すると、データのロード前にターゲット表の外部キー制約が保存されます。このオプションを選択しなければ、ターゲット表の外部キー制約はデータのロード前に無効化され、ロード後に再度有効化されます。再度有効化する間に見つかった制約違反はランタイム監査エラー表で識別され、指定した場合は例外表にロードされます。
制約を無効化すると、制約チェックが実行されないためロード速度が向上します。ただし、再有効化中にいずれかの行で例外が発生すると、その行に対する制約は未検証状態のままになります。この種の行は、そのROWIDを使用してランタイム監査エラー表に記録されます。エラー行を手動で検査し、必要な訂正処理を行う必要があります。
制約の有効化および無効化はターゲット表に対して行われます。「制約の有効化」プロパティを無効化すると、ターゲット表の制約はデータをロードする前に無効化され、データをロードした後に再有効化されます。制約が再有効化されると、表全体がスキャンされ、制約に違反する行が例外表に記録されて監査ブラウザに制約違反エラーとしてレポートされます。
ターゲット表が空で、「制約の有効化」プロパティが無効化されているシナリオについて考えます。最初に、ソース表には10行あり、そのうち2行がターゲット表の制約に違反しているとします。マッピングを実行すると、まずターゲット表の制約が無効化されます。次に、データ(10行すべて)がロードされてからターゲット表の制約が再有効化されます。制約が再有効化されると、制約に違反する2行が例外表に記録されます。監査ブラウザによって、2つの制約違反エラーがあることがレポートされます。
その後、ターゲット表の制約に違反する5行を含む20行から構成される新規ソース表を使用して、マッピングが再度実行されます。データ(20行すべて)がターゲット表にロードされると、ターゲット表は30行になります。ターゲット表の制約が再有効化されると、7行が例外表に記録されて制約違反エラーとして監査ブラウザでレポートされます。この7行は、最初にレポートされた2行と、新規にレポートされた5行から構成されます。これは、Warehouse Builderがターゲット表全体をスキャンするためです。30行すべてがチェックされるため、最初のデータ・ロードの違反ありの2行も含まれます。Warehouse Builderでは、マッピングが2回目に実行されたときに追加された新規の行のみの識別はできません。したがって、データをロードするたびに事前にターゲット表を切り捨てないかぎり、以前のデータ・ロードの制約違反が必ず毎回レポートされます。
「制約の有効化」を選択解除に設定するには、次の制限を伴います。
「セット・ベース」オペレーティング・モードの場合、「選択解除」に設定すると、ターゲットの外部キー制約がロード前に無効化され、ロード後に再有効化されます。このプロパティは、ターゲット表を参照する他の表の外部キー制約には影響しません。ロードにSQLまたはPL/SQLパッケージではなくSQL*Loaderが使用される場合は、.ctlファイルに再有効化句が追加されます。
オペレーティング・モードが「セット・ベースから行ベースへのフェイルオーバー」および「セット・ベースから行ベース(ターゲットのみ)へのフェイルオーバー」の場合、選択解除に設定すると、ターゲットの外部キー制約がロード前に無効化され、セット・ベース・モードによるロードに成功した場合は再有効化されます。この設定は、他の表を参照している外部キーには影響しません。ロードが行ベースにフェイルオーバーした場合は、行ベース・モードでロードが繰り返され、すべての制約は有効化されたままになります。
|
注意: 再有効化中に制約違反が作成されると、ロードはセット・ベース・モードから行ベース・モードにフェイルオーバーしません。 |
「行ベース」または「行ベース(ターゲットのみ)」オペレーティング・モードの場合は、このオプションが選択されなくても、すべての外部キー制約は有効化されたままです。
TRUNCATE/INSERT DMLタイプの場合は、選択解除に設定すると、デフォルト・オペレーティング・モードに関係なく、ターゲット表を参照する他の表の外部キー制約がロード前に無効化されてロード後に再有効化されます。