Dette er et gammelt problem for mig, som jeg løste for et stykke tid siden, men jeg regnede med, at jeg endelig ville skrive det op. Da jeg startede i mit nye firma, gik produktionsdatabasen ned cirka en gang om måneden med ORA-4031 hukommelsesfejl. Den nuværende DBA regnede med, at problemet var mangel på bindevariabler i applikationskoden, hvilket normalt er den mest sandsynlige synder. Mangel på bindevariabler var et problem, men som jeg hurtigt fandt ud af, var problemet slet ikke relateret til SQL-sætninger. Problemet skyldtes snarere en fejl med Direct NFS. Tilsyneladende havde Direct NFS en hukommelseslækage i sig. Hukommelseslækagen påvirkede den delte pool, og givet nok tid, blev den ledige hukommelse i den delte pool ikke-eksisterende, ORA-4031-fejl ville blive kastet, og databasen ville gå ned.
Jeg samarbejdede med Oracle Support for at bekræfte, at dette var en fejl. Dette problem blev arkiveret som fejl 10237987 og påvirker version 11.1.0 og 11.2.0. Jeg stødte på denne fejl på en 3 node RAC-klynge, der kører Oracle Enterprise Linux. Jeg var aldrig i stand til at få et svar, hvis denne fejl opstod på andre OS-platforme eller for ikke-RAC-miljøer. Fejlen får KGNFS-puljerne i den delte pool til at vokse betydeligt over tid.
Jeg beklager, at jeg aldrig var i stand til at gennemskue denne fejl til en konklusion med Oracle Support. Support ville have mig til at fange et spor, da databasen gik ned på grund af ORA-4031-fejl med KGNFS-puljerne. Hvad de ikke indså var, at KGNFS-puljerne forårsagede mangel på plads i alle andre pools i den delte pool. KGNFS-puljerne ville presse de andre puljer ud, og det var ofte, når der blev anmodet om plads i de andre puljer, at ORA-4031-fejlen blev nået. Og den eneste gang, sporingsfilerne blev genereret, var at vente på, at forekomsten(e) gik ned. Jeg kunne ikke sidde og vente på, at vores forekomster gik ned midt på dagen bare for at fange en sporingsfil til Oracle Support, især da sporingsfilen måske ikke engang er fra KGNFS-puljerne!
I sidste ende var vores løsning at stoppe med at bruge Direct NFS i vores konfiguration. Vores test viste ingen præstationsforskelle med eller uden Direct NFS. Siden vi holdt op med at bruge Direct NFS, har vi ikke set nogen af ORA-4031-fejlene. Jeg kan se, at fejlen stadig er derude på Metalink, men der er ingen rettelse endnu.