普段SI Object Browserというアプリケーションを使って、Oracleを操作しています。
テストで同じ挿入のSQLを2度実行したところ、重複で2度目はエラーになるはずが、エラーになりませんでした。
photo credit: Experience Green via photopin (license)
制約がなくなっている
SI Object BrowserでINDEXとして表示されるところを見ても、全くなにも表示されません。テーブルの定義を確認しても、一意制約やインデックスの定義がありません。
復旧作業
自社で開発したものではなく、お客さんから運用を委託されているシステムで、なぜINDEXがないのかはわかりません。お客さん側で調査をされ、以下の手順でINDEXを復旧することになりました。
- 既存のデータベースをSI Object Browserでエクスポート
- 既存のデータベースを削除
- 新たにデータベースを作成
- 新たなデータベース用にリスナーを構成
- 新たなデータベースにユーザーを作成
- 新たなデータベースにお客さんが用意したINDEXが存在するバックアップから、データを除いてSI Object Browserでインポート
- 新たなデータベースに1.でエクスポートしたバックアップから、データのみSI Object Browserでインポート
結果は、目論見通りINDEXが作成され、データも元に戻りました。
本番開始前に発覚して、対処をできて助かりました。