ablog

不器用で落着きのない技術者のメモ

Oracle Database の無効オブジェクトってなんだ?

無効オブジェクトとは

使用できなくなった

  • 索引
  • PL/SQLオブジェクト(プロシージャ、ファンクション、パッケージ、トリガー)

のこと。

原因・影響・対処

PL/SQLオブジェクト
  • 原因: PL/SQLオブジェクトから参照しているオブジェクトの変更
  • 影響: 次回実行時に自動コンパイルされるので無問題
  • 対処: ただし、テーブルなどのオブジェクトを変更した場合は、無効オブジェクトが存在しないかチェックし、あれば手動コンパイルする。手動コンパイルに失敗する場合は原因を取り除いて再度手動コンパイルする。などしておいたほうがベター。
索引
  • 原因: ALTER TABLE ... MOVE コマンドによる表の移動
  • 影響: 索引が使用されず常にフルスキャンされる
  • 対処: 索引を再構築する