Este es un viejo problema para mí que resolví hace bastante tiempo, pero pensé que finalmente lo escribiría. Cuando comencé en mi nueva empresa, la base de datos de producción fallaba aproximadamente una vez al mes con errores de memoria ORA-4031. El DBA actual pensó que el problema era la falta de variables de vinculación en el código de la aplicación, que normalmente es el culpable más probable. La falta de variables de vinculación fue un problema, pero como pronto descubrí, el problema no estaba relacionado con las declaraciones de SQL en absoluto. Más bien, el problema se debió a un error con Direct NFS. Aparentemente, Direct NFS tenía una fuga de memoria. La fuga de memoria afectó al grupo compartido y, dado el tiempo suficiente, la memoria libre en el grupo compartido se volvió inexistente, los errores ORA-4031 se descartaron y la base de datos se bloqueó.
Trabajé con Oracle Support para confirmar que se trataba de un error. Este problema se archivó como error 10237987 y afecta a las versiones 11.1.0 y 11.2.0. Me encontré con este error en un clúster RAC de 3 nodos que ejecutaba Oracle Enterprise Linux. Nunca pude obtener una respuesta si este error ocurrió en otras plataformas de SO o para entornos que no son RAC. El error hace que los grupos KGNFS en el grupo compartido crezcan significativamente con el tiempo.
Lamento no haber podido llevar este error a una conclusión con Oracle Support. El soporte quería que capturara un seguimiento cuando la base de datos colapsó debido a errores ORA-4031 con los grupos KGNFS. De lo que no se dieron cuenta fue que los grupos KGNFS causaron una escasez de espacio en todos los demás grupos en el Grupo compartido. Los grupos KGNFS exprimían a los otros grupos y, a menudo, cuando se solicitaba espacio en los otros grupos, se llegaba al error ORA-4031. Y la única vez que se generaron los archivos de seguimiento fue para esperar a que las instancias fallaran. No podía sentarme y esperar a que nuestras instancias colapsaran a la mitad del día solo para capturar un archivo de seguimiento para Oracle Support, ¡especialmente porque el archivo de seguimiento ni siquiera puede ser de los grupos KGNFS!
Al final, nuestra solución fue dejar de usar Direct NFS en nuestra configuración. Nuestras pruebas no mostraron diferencias de rendimiento con o sin Direct NFS. Desde que dejamos de usar Direct NFS, no hemos visto ninguno de los errores ORA-4031. Veo que el error todavía está disponible en Metalink, pero aún no se ha solucionado.