sql >> Base de Datos >  >> RDS >> Oracle

La consulta con combinaciones externas se comporta de manera diferente en Oracle 12c

ACTUALIZACIÓN: Esto se solucionó en 12.1.0.2.

Esto definitivamente parece un error en 12.1.0.1. Lo alentaría a crear una solicitud de servicio a través del soporte de Oracle. Es posible que puedan encontrar una solución o una solución mejor. Y es de esperar que Oracle pueda solucionarlo en una versión futura para todos. Normalmente, la peor parte de trabajar con soporte es reproducir el problema. Pero dado que ya tiene un caso de prueba muy bueno, este problema puede ser fácil de resolver.

Probablemente hay muchas formas de evitar este error. Pero es difícil saber qué método funcionará siempre. La reescritura de su consulta puede funcionar ahora, pero si las estadísticas del optimizador cambian, quizás el plan vuelva a cambiar en el futuro.

Otra opción que me funciona en 12.1.0.1.0 es:

ALTER SESSION SET optimizer_features_enable='11.2.0.3';

Pero debe recordar cambiar siempre esta configuración antes de ejecutar la consulta y luego volver a cambiarla a '12.1.0.1' después. Hay formas de insertar eso dentro de una sugerencia de consulta, como /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */ . Pero por alguna razón eso no funciona aquí. O tal vez pueda configurarlo temporalmente para todo el sistema y volver a cambiarlo después de que haya disponible una solución o una mejor solución.

Independientemente de la solución que utilice, recuerde documentarla. Si una consulta parece extraña, el siguiente desarrollador puede intentar "arreglarla" y encontrar el mismo problema.