sql >> Database >  >> RDS >> Oracle

Query's met outer joins werken anders in Oracle 12c

UPDATE: Dit is opgelost in 12.1.0.2.

Dit lijkt absoluut op een bug in 12.1.0.1. Ik zou u willen aanmoedigen om een ​​serviceverzoek te maken via Oracle-ondersteuning. Ze kunnen misschien een oplossing of een betere oplossing vinden. En hopelijk kan Oracle het in een toekomstige versie voor iedereen oplossen. Normaal gesproken is het slechtste deel van het werken met ondersteuning het probleem reproduceren. Maar aangezien je al een zeer goede testcase hebt, is dit probleem misschien gemakkelijk op te lossen.

Er zijn waarschijnlijk veel manieren om deze bug te omzeilen. Maar het is moeilijk te zeggen welke methode altijd zal werken. Het herschrijven van uw zoekopdracht kan nu werken, maar als de optimalisatiestatistieken veranderen, zal het plan in de toekomst misschien weer veranderen.

Een andere optie die voor mij werkt op 12.1.0.1.0 is:

ALTER SESSION SET optimizer_features_enable='11.2.0.3';

Maar u moet eraan denken deze instelling altijd te wijzigen voordat de query wordt uitgevoerd en daarna weer terug te zetten naar '12.1.0.1'. Er zijn manieren om dat in te sluiten in een vraaghint, zoals /*+ OPT_PARAM('optimizer_features_enable' '11.2.0.3') */ . Maar om de een of andere reden werkt dat hier niet. Of misschien kunt u dat tijdelijk instellen voor het hele systeem en het weer wijzigen nadat er een oplossing of een betere oplossing beschikbaar is.

Welke oplossing u ook gebruikt, vergeet niet deze te documenteren. Als een zoekopdracht er vreemd uitziet, kan de volgende ontwikkelaar proberen deze te "repareren" en hetzelfde probleem op te lossen.



  1. DECODE() functie in SQL Server

  2. JDBCTemplate set geneste POJO met BeanPropertyRowMapper

  3. PostgreSQL:FATAL - Peer-authenticatie mislukt voor gebruiker (PG::ConnectionBad)

  4. TRUNC(getal) Functie in Oracle