OracleバージョンによりとあるSQLのレスポンス悪化したときの対応。
実際に試した環境:Oracle11.2.0.4 指定パラメータは10.2.0.5 ※新しいバージョンでも使用可能です。
OPTIMIZER_FEATURES_ENABLE は、データベースのアップグレード後もオプティマイザの以前の動作を保持できることを目的としたパラメータ。
※注意点(optimizer_features_enableで下位のバージョンを指定しても実行計画が完全には下位バージョンとは一致せず、逆にレスポンス低下が発生する場合があることを確認。使用は慎重にしたほうが良い。
バージョン「10.0.2.5」を指定すると、そのバージョン以降に追加された機能は全て無効となり、 「10.0.2.5」までにリリースされた機能のみを利用して実行計画をたてることができるようになる。
optimizer_features_enable自体は、SPFILEとかに記載することもでき、AlterSessionでも変更可能。
SQLHint句の場合の書き方は以下の通り。(動作させたいオプティマイザバージョンを記載する)
/*+ optimizer_features_enable('10.2.0.5') */
最上位のSelect句にだけ追加すれば、同一のSQL内すべてに適用。