sql >> Database >  >> RDS >> Oracle

ORA-4031 fouten met Direct NFS

Dit is een oud probleem voor mij dat ik een tijdje geleden heb opgelost, maar ik dacht dat ik het eindelijk zou opschrijven. Toen ik bij mijn nieuwe bedrijf begon, crashte de productiedatabase ongeveer een keer per maand met ORA-4031 geheugenfouten. De huidige DBA dacht dat het probleem het gebrek aan bindingsvariabelen in de applicatiecode was, wat normaal gesproken de meest waarschijnlijke boosdoener is. Het ontbreken van bindvariabelen was een probleem, maar zoals ik al snel ontdekte, had het probleem helemaal niets te maken met SQL-instructies. Het probleem was eerder te wijten aan een bug met Direct NFS. Blijkbaar had Direct NFS een geheugenlek. Het geheugenlek had gevolgen voor de Shared Pool en als er genoeg tijd was, werd het vrije geheugen in de Shared Pool niet meer, ORA-4031-fouten werden weggegooid en de database crashte.

Ik heb met Oracle Support samengewerkt om te bevestigen dat dit een fout was. Dit probleem is ingediend als Bug 10237987 en is van invloed op versies 11.1.0 en 11.2.0. Ik kwam deze bug tegen op een RAC-cluster met 3 knooppunten waarop Oracle Enterprise Linux draait. Ik heb nooit een antwoord kunnen krijgen als deze bug zich voordeed op andere OS-platforms of voor niet-RAC-omgevingen. De bug zorgt ervoor dat de KGNFS-pools in de Gedeelde Pool in de loop van de tijd aanzienlijk groeien.

Het spijt me dat ik deze bug nooit tot een oplossing heb kunnen brengen met Oracle Support. Support wilde dat ik een spoor zou vastleggen toen de database crashte vanwege ORA-4031-fouten met de KGNFS-pools. Wat ze zich niet realiseerden, was dat de KGNFS-pools ruimtegebrek veroorzaakten in alle andere pools in de Shared Pool. De KGNFS-pools zouden de andere pools uitpersen en het was vaak wanneer ruimte in de andere pools werd gevraagd dat de ORA-4031-fout werd bereikt. En de enige keer dat de traceerbestanden werden gegenereerd, was wachten tot de instantie(s) crashten. Ik kon niet wachten tot onze instanties midden op de dag crashten om een ​​traceerbestand voor Oracle Support vast te leggen, vooral omdat het traceerbestand misschien niet eens uit de KGNFS-pools komt!

Uiteindelijk was onze oplossing om te stoppen met het gebruik van Direct NFS in onze configuratie. Onze tests lieten geen prestatieverschillen zien met of zonder Direct NFS. Sinds we zijn gestopt met het gebruik van Direct NFS, hebben we geen enkele van de ORA-4031-fouten meer gezien. Ik zie dat de bug nog steeds bestaat op Metalink, maar nog geen oplossing.


  1. Wat is een logische OF-operator in SQL Server - SQL Server / TSQL-zelfstudie, deel 119

  2. SQL-query om kolomwaarden uit meerdere rijen in Oracle samen te voegen

  3. Kruistabel met een groot of ongedefinieerd aantal categorieën

  4. DML invoegen met bindingsvariabele:clausule van uitvoering onmiddellijke verklaring GEBRUIKEN