Oracle
 sql >> база данни >  >> RDS >> Oracle

Заявката, включваща външни присъединявания, се държи по различен начин в Oracle 12c

АКТУАЛИЗИРАНЕ: Това е коригирано в 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') */ . Но по някаква причина това не работи тук. Или може би можете временно да зададете това за цялата система и да го промените обратно, след като е налице поправка или по-добра работа.

Каквото и решение да използвате, не забравяйте да го документирате. Ако дадена заявка изглежда странна, следващият разработчик може да се опита да я „поправи“ и да удари същия проблем.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Примерни схеми на GitHub

  2. Кога или защо да използвате SET DEFINE OFF в Oracle Database

  3. Как да форматирате числата като римски цифри в Oracle

  4. Най-добрият начин да нулирате последователност на Oracle до следващата стойност в съществуваща колона?

  5. Как да посочите IN клауза в динамична заявка с помощта на променлива?