AKTUALIZACE: Toto je opraveno v 12.1.0.2.
Rozhodně to vypadá na chybu v 12.1.0.1. Doporučil bych vám vytvořit požadavek na službu prostřednictvím podpory Oracle. Možná budou schopni najít opravu nebo lepší řešení. A doufejme, že to Oracle dokáže opravit v budoucí verzi pro každého. Normálně je nejhorší částí práce s podporou reprodukování problému. Ale protože již máte velmi dobrý testovací případ, tento problém může být snadno vyřešit.
Pravděpodobně existuje mnoho způsobů, jak tuto chybu obejít. Ale je těžké říct, která metoda bude vždy fungovat. Přepis vašeho dotazu může nyní fungovat, ale pokud se statistiky optimalizátoru změní, plán se možná v budoucnu změní zpět.
Další možnost, která mi na 12.1.0.1.0 funguje, je:
ALTER SESSION SET optimizer_features_enable='11.2.0.3';
Musíte si však pamatovat, že toto nastavení musíte vždy změnit před spuštěním dotazu a poté jej změnit zpět na „12.1.0.1“. Existují způsoby, jak to vložit do nápovědy k dotazu, například /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */
. Ale z nějakého důvodu to tady nefunguje. Nebo to můžete dočasně nastavit pro celý systém a změnit zpět, jakmile bude k dispozici oprava nebo lepší řešení.
Ať už použijete jakékoli řešení, nezapomeňte jej zdokumentovat. Pokud dotaz vypadá divně, další vývojář se jej může pokusit „opravit“ a narazit na stejný problém.