OPDATERING: Dette er rettet i 12.1.0.2.
Dette ligner bestemt en fejl i 12.1.0.1. Jeg vil opfordre dig til at oprette en serviceanmodning gennem Oracle-support. De kan muligvis finde en løsning eller en bedre løsning. Og forhåbentlig kan Oracle rette det i en fremtidig version for alle. Normalt er det værste ved at arbejde med support at reproducere problemet. Men da du allerede har en meget god testcase, kan dette problem være let at løse.
Der er sikkert mange måder at omgå denne fejl på. Men det er svært at sige, hvilken metode der altid vil fungere. Omskrivning af din forespørgsel fungerer muligvis nu, men hvis optimeringsstatistikken ændrer sig, vil planen måske ændre sig tilbage i fremtiden.
En anden mulighed, der virker for mig på 12.1.0.1.0 er:
ALTER SESSION SET optimizer_features_enable='11.2.0.3';
Men du skal huske altid at ændre denne indstilling, før forespørgslen køres, og derefter ændre den tilbage til '12.1.0.1' efter. Der er måder at indlejre det i et forespørgselstip, såsom /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */
. Men af en eller anden grund virker det ikke her. Eller måske kan du midlertidigt indstille det for hele systemet og ændre det tilbage, når en rettelse eller bedre løsning er tilgængelig.
Uanset hvilken løsning du bruger, så husk at dokumentere det. Hvis en forespørgsel ser mærkelig ud, kan den næste udvikler prøve at "fikse" den og ramme det samme problem.