Oracle
 sql >> база данни >  >> RDS >> Oracle

ORA-4031 грешки с Direct NFS

Това е стар проблем за мен, който реших преди доста време, но реших, че най-накрая ще го напиша. Когато започнах в новата си компания, производствената база данни се сриваше около веднъж месечно с грешки в паметта ORA-4031. Настоящият DBA смята, че проблемът е липсата на свързващи променливи в кода на приложението, което обикновено е най-вероятният виновник. Липсата на свързващи променливи беше проблем, но както скоро разбрах, проблемът изобщо не беше свързан със SQL изрази. По-скоро проблемът се дължи на грешка с Direct NFS. Очевидно Direct NFS имаше изтичане на памет в него. Изтичането на памет засегна споделения пул и при достатъчно време свободната памет в споделения пул не съществуваше, грешките ORA-4031 ще бъдат изхвърлени и базата данни ще се срине.

Работих с поддръжката на Oracle, за да потвърдя, че това е грешка. Този проблем е регистриран като грешка 10237987 и засяга версии 11.1.0 и 11.2.0. Попаднах на тази грешка в RAC клъстер с 3 възела, работещ с Oracle Enterprise Linux. Никога не успях да получа отговор, ако тази грешка е възникнала на други операционни платформи или за среди извън RAC. Грешката води до значително увеличаване на KGNFS пуловете в споделения пул с течение на времето.

Съжалявам, че така и не успях да разреша този бъг до заключение с поддръжката на Oracle. Поддръжката искаше да заснема следа, когато базата данни се срине поради грешки ORA-4031 с пуловете KGNFS. Това, което не успяха да осъзнаят, беше, че KGNFS пуловете причиниха недостиг на пространство във всички останали пулове в споделения пул. KGNFS пуловете ще изтласкват другите пулове и често се стига до грешка ORA-4031, когато се иска място в другите пулове. И единственият път, когато бяха генерирани файловете за проследяване, беше да се изчака екземплярът(ите) да се срине. Не можех да седя и да чакам нашите екземпляри да се сринат в средата на деня, само за да заснема файл за проследяване за поддръжка на Oracle, особено след като файлът за проследяване може дори да не е от KGNFS пуловете!

В крайна сметка нашето решение беше да спрем да използваме Direct NFS в нашата конфигурация. Нашето тестване не показа разлики в производителността със или без Direct NFS. Откакто престанахме да използваме Direct NFS, не сме виждали нито една от грешките ORA-4031. Виждам, че грешката все още е там в Metalink, но все още няма поправка.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TEMPFILE Офлайн физическа готовност

  2. Актуализиране на таблица в Oracle, ако някоя стойност на полето е нула и определянето на тази актуализация е успешна

  3. СЪЗДАЙТЕ Oracle процедура

  4. GWFG в Oracle RAC

  5. Създаване на тригер, който да се изпълнява само когато се създава нова таблица