1

Oracle 11g

ステップ1。

create table pur_order(
               po_number number primary key,
               po_date date,
               po_vendor number,
                :)

手順2.次のようなユーザーファイルpodata.txtコンテンツからEnterpriseManager11gを使用してデータをロードします。

  1 25-JUN-2011 1001
  2 26-JUN-2011 1002
  3 27-JUN-2011 1003
  1 27-JUN-2011 1001
  2 28-JUN-2011 1002

ステップ3.ロードプロセスが正常に終了しました。

テーブルの内容は上記の問題と同じです。すでにpo_numberを主キーとして定義しているのに、po_numberの重複する値をロードできるのはなぜですか。

4

1 に答える 1

3

ほとんどの場合、このインポート方法では、ダイレクトパスロード方法でSQL*Loaderユーティリティを使用します。これにより、ドキュメントで説明されているように、いくつかの整合性制約が無効になります。

参照制約など、他の行またはテーブルに依存する整合性制約は、ダイレクトパスのロード前に無効にされ、後で再度有効にする必要があります。REENABLEが指定されている場合、SQL*Loaderはロードの最後にそれらを自動的に再度有効にすることができます。制約が再度有効になると、テーブル全体がチェックされます。このチェックに失敗した行は、指定されたエラーログに報告されます。直接ロード、整合性制約、およびトリガーを参照してください。

SQL * Loaderは制約を再度有効にしようとしましたが、失敗したため、次のようになりました。

UNIQUE制約の違反が検出された場合、インデックスはIndexUnusable状態のままになります。使用できない状態のままになっているインデックスを参照してください。

主キーインデックスが使用できないことがわかると思います(SELECT index_name, status FROM all_indexes WHERE table_name = 'PUR_ORDER')。

直接パスをロードせずにデータファイルをロードするか、後で制約が正常に有効になっていることを確認してください。

于 2012-06-20T12:14:24.037 に答える