АКТУАЛИЗИРАНЕ: Това е коригирано в 12.1.0.2.
Това определено изглежда като грешка в 12.1.0.1. Бих ви насърчил да създадете заявка за услуга чрез поддръжката на Oracle. Може да успеят да намерят решение или по-добро решение. И да се надяваме, че Oracle може да го поправи в бъдеща версия за всички. Обикновено най-лошата част от работата с поддръжката е възпроизвеждането на проблема. Но тъй като вече имате много добър тестов случай, този проблем може да бъде лесен за разрешаване.
Вероятно има много начини да заобиколите този бъг. Но е трудно да се каже кой метод винаги ще работи. Пренаписването на заявката ви може да работи сега, но ако статистиката на оптимизатора се промени, може би планът ще се промени отново в бъдеще.
Друг вариант, който работи за мен на 12.1.0.1.0 е:
ALTER SESSION SET optimizer_features_enable='11.2.0.3';
Но трябва да помните винаги да променяте тази настройка, преди да се изпълни заявката, и след това да я променяте обратно на '12.1.0.1' след това. Има начини да вградите това в намек за заявка, като например /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */
. Но по някаква причина това не работи тук. Или може би можете временно да зададете това за цялата система и да го промените обратно, след като е налице поправка или по-добра работа.
Каквото и решение да използвате, не забравяйте да го документирате. Ако дадена заявка изглежда странна, следващият разработчик може да се опита да я „поправи“ и да удари същия проблем.