sql >> Databáze >  >> RDS >> Oracle

Chyby ORA-4031 s Direct NFS

Toto je pro mě starý problém, který jsem před chvílí vyřešil, ale řekl jsem si, že ho konečně napíšu. Když jsem začínal ve své nové společnosti, produkční databáze se asi jednou za měsíc zhroutila s chybami paměti ORA-4031. Současný DBA usoudil, že problémem je nedostatek proměnných vazeb v kódu aplikace, což je obvykle nejpravděpodobnější viník. Nedostatek proměnných vazby byl problém, ale jak jsem brzy zjistil, problém se vůbec netýkal příkazů SQL. Problém byl spíše kvůli chybě s Direct NFS. Direct NFS měl zjevně únik paměti. Únik paměti ovlivnil sdílený fond a pokud bude dostatek času, volná paměť ve sdíleném fondu nebude existovat, chyby ORA-4031 budou zahozeny a databáze se zhroutí.

Pracoval jsem s podporou Oracle, abych potvrdil, že se jedná o chybu. Tento problém byl nahlášen jako chyba 10237987 a týká se verzí 11.1.0 a 11.2.0. Narazil jsem na tuto chybu na 3uzlovém clusteru RAC se systémem Oracle Enterprise Linux. Nikdy jsem nebyl schopen dostat odpověď, pokud se tato chyba vyskytla na jiných platformách OS nebo v prostředích bez RAC. Chyba způsobila, že fondy KGNFS ve sdíleném fondu časem výrazně rostou.

Lituji, že jsem nikdy nedokázal tuto chybu dotáhnout do konce s podporou Oracle. Podpora chtěla, abych zachytil trasování, když se databáze zhroutila kvůli chybám ORA-4031 s fondy KGNFS. Neuvědomili si, že fondy KGNFS způsobily nedostatek místa ve všech ostatních fondech ve sdíleném fondu. KGNFS fondy by vytlačily ostatní fondy a často to bylo, když bylo požadováno místo v jiných fondech, že došlo k chybě ORA-4031. A jediný čas, kdy byly trasovací soubory vygenerovány, bylo čekat na selhání instance (instancí). Nemohl jsem sedět a čekat, až se naše instance uprostřed dne zhroutí, jen abych zachytil trasovací soubor pro podporu Oracle, zejména proto, že trasovací soubor nemusí být ani z fondů KGNFS!

Nakonec bylo naším řešením přestat používat Direct NFS v naší konfiguraci. Naše testování neprokázalo žádné rozdíly ve výkonu s přímým NFS ani bez něj. Od té doby, co jsme přestali používat Direct NFS, jsme nezaznamenali žádnou z chyb ORA-4031. Vidím, že chyba je stále na Metalink, ale zatím žádná oprava.


  1. 5 tipů pro správu vašich týmů při sociálním distancování

  2. Přidejte nový sloupec tabulky na konkrétní řadovou pozici v Microsoft SQL Server

  3. Operátor SQL se rovná (=) pro začátečníky

  4. Obnova instance mySQL z jiného uživatelského účtu (macOS)