Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
DBからSQLの結果が返ってこない
06-12-2014, 01:07 PM,
#3
RE: DBからSQLの結果が返ってこない

クエリの結果が返ってこない問題ですが、解決しました。

最終的な結論としては、「オプティマイザ・フィードバック」という機能に関するバグらしく、
この機能は、SQLの実行計画作成時に、統計情報を使って、同じSQL実行結果を考慮してくれる、
というものらしいのですが、、
この処理の際に、「アウトラインやSQLプロファイルを使用している場合に
TABLE 句とバインド変数を含むクエリ」だと、実行計画を正しく生成できない
という非公開バグがあるようです。


問題が起こるクエリ例:
SELECT ... FROM (SELECT ...FROM table(table_function (plsql) expression))


■オプティマイザ・フィードバックとは
Oracle の ver 11.2から追加され、
これは、SQLの実行計画作成(ハードパース)時に、夜間等に収集されてるOracleの統計情報から、
実データのカーディナリティ(データの種類の多さ)を合わせて考慮することで、
実行計画の制度を上げることを目的とした機能・・・らしい。
これによって、同じSQLでも、実行計画が都度変わる可能性がある・・・らしい。


解決策は、このオプティマイザ・フィードバック機能を、
Oracleパラメータの設定で無効にする(_optimizer_use_feedback = false)ことで、
同対応をしたところ、今のところこちらの環境では、同現象が再現されなくなっています。

ちなみに、こちらの環境(11.2.0.1)でのみ発生する稀な問題で、
最新のマイナーバージョン(11.2.0.2)であれば、
同バグは修正されているようです。


今回の教訓は
「とりあえず最新の環境でためしてみろ」
「わからないことは素直にサポートに聞け」
という2点ですね。



Messages In This Thread
RE: DBからSQLの結果が返ってこない - by umemura - 06-12-2014, 01:07 PM
Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('1081')