開発環境にてバッチをまわしてたら、ORA-26026が出た。
今まで見たことがない。
Oracleにはこうかかれている。
ORA-26026: 一意索引string.stringは初期状態では使用不可です。
原因: 一意索引がIU状態にあります(一意索引では、SKIP_UNUSABLE_INDEXESを使用して索引メンテナンスをスキップできません)。
処置: 索引または索引パーティションを再構築するか、またはSKIP_INDEX_MAINTENANCEを使用してください(クライアントがSQL*Loaderの場合)。
索引を再構築しようとしてみるが、PKだったので無理だった。
まずは原因をさぐってみた。
なんとなく日本語からみて、一意制約のところに変なデータが入ってる?と感じた。
なのでこんなSQLでユニークキーが二重登録されているものをさがしてみた。
PKがidで、PKは一緒だが作成日が違うものを探すSQL。
select a.id, a.input_date, a.value from HOGE_TBL a, HOGE_TBL b where a.id = b.id and not a.input_date = b.input_date
案の定登録されていたので、削除してからそのジョブを再実行したら直った。
おそらくSQL*Loaderで書き込む際、なんらかの理由でPKを無視してINSERTされた模様。
むむむ。。