0

主キー制約と一意のインデックスを持つテーブルに行を挿入しようとするシナリオがある、大きな移行プロセスがあります。制約を挿入する前に、制約が無効になり(SQL開発者に確認)、インデックスに使用不可のマークが付けられます(SQL開発者に再度確認)。しかし、それでも挿入するとエラーが発生します

01502. 00000 -  "index '%s.%s' or partition of such index is in unusable state"

そのため、SQL開発者から手動でクエリを実行してみても、同じ結果が得られるようにしたいと思いました。私は明示的にセッション(およびシステム)をこのように使用できないインデックスをスキップするように設定しようとしました

BEGIN
EXECUTE IMMEDIATE 'ALTER SESSION SET SKIP_UNUSABLE_INDEXES = TRUE';
single row insert line
END;

しかし、それでも同じエラー。私の理解では、制約が無効になっている場合。インデックスは使用できず、挿入できるはずの使用できないインデックスをスキップします。それが正しいか?私はここで非常に些細なことを見逃していますか?任意の提案/ヘルプをいただければ幸いです。

PS:Oracle 11.2.0.1.0

4

2 に答える 2

2

インデックスが UNIQUE でない場合は、SKIP_UNUSABLE_INDEXES = true を設定すると機能するはずです。ただし、あなたの場合、インデックスは一意であるため、これを行うことはできないと思います。

http://docs.oracle.com/cd/B28359_01/server.111/b28320/initparams229.htm

于 2012-12-13T13:05:57.187 に答える
0

使用できない主キーを持つすべての行の代理キーを作成します。

于 2012-12-14T06:10:42.500 に答える