更新: これは12.1.0.2で修正されています。
これは間違いなく12.1.0.1のバグのように見えます。 Oracleサポートを通じてサービスリクエストを作成することをお勧めします。彼らは修正またはより良い回避策を見つけることができるかもしれません。そしてうまくいけば、Oracleはすべての人のために将来のバージョンでそれを修正することができます。通常、サポートの使用に関する最悪の部分は、問題を再現することです。ただし、すでに非常に優れたテストケースがあるため、この問題は簡単に解決できる可能性があります。
このバグを回避する方法はおそらくたくさんあります。しかし、どちらの方法が常に機能するかを判断するのは困難です。クエリの書き換えは現在機能する可能性がありますが、オプティマイザの統計が変更された場合、計画は将来変更される可能性があります。
12.1.0.1.0で機能するもう1つのオプションは、次のとおりです。
ALTER SESSION SET optimizer_features_enable='11.2.0.3';
ただし、クエリを実行する前に必ずこの設定を変更し、その後で「12.1.0.1」に戻すことを忘れないでください。 /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */
など、クエリヒント内にそれを埋め込む方法があります。 。しかし、何らかの理由でここでは機能しません。または、システム全体に対して一時的に設定し、修正またはより適切な回避策が利用可能になった後で元に戻すことができます。
どちらのソリューションを使用する場合でも、それを文書化することを忘れないでください。クエリが奇妙に見える場合、次の開発者はそれを「修正」して同じ問題を解決しようとする可能性があります。