ORA-26026が出た!

開発環境にてバッチをまわしてたら、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された模様。

むむむ。。