1

私の質問は、主キー インデックスに使用されるテーブル スペースが、テーブル自体に使用されるテーブル スペースと異なる状況に関するものです。Oracle はこのインデックスを使用しますか、それとも使用できなくなりますか?

そのテーブルを含むスキーマをOracleにインポートしようとしたためです。Oracle は、この主キーのインデックスが使用できないという警告を出しました。主キー インデックスのテーブルスペースを変更してスキーマを修正し、再度エクスポートして、警告なしでデータベースにインポートしました。

これは、主キー インデックスのテーブルスペースが常にテーブル自体のテーブルスペースと同じでなければならないということですか? それとも、あらゆる種類のインデックス (列インデックスなど) に当てはまりますか?

この規則は DB2 にも適用されますか?

4

2 に答える 2

4

インデックスとデータを異なるテーブルスペースに格納することはまったく問題ありません。次のことを行うとどうなりますか。

alter index index_name rebuild;

その後、インデックスはまだ使用できませんか? そうでない場合は、テーブルのインポート パラメータを確認してください。たとえば、SQL*Loader は、ダイレクト パス ロードでインデックスを無効にすることができます (これは単なる推測であり、データのロード方法については言及していません)。

インデックスがまだ使用できない場合は、データの異常、特に重複キーを確認してください。修正してください!

于 2010-11-19T09:48:39.350 に答える
3

マーティンの言ったことは正しい。ただし、表領域を分離する必要はありません。インポート時のテーブルスペース エラーを回避するためにできること (datapump ではなくエクスポート/インポートを使用していると仮定) は、存在するデフォルトのテーブルスペースでユーザーを作成することです。次に、データベースのみをインポートしてから、インデックスと制約を追加します。

于 2010-11-19T14:06:23.420 に答える