Đây là một vấn đề cũ đối với tôi mà tôi đã giải quyết cách đây khá lâu, nhưng tôi nghĩ rằng cuối cùng tôi sẽ viết ra. Khi tôi bắt đầu làm việc tại công ty mới, cơ sở dữ liệu sản xuất sẽ bị lỗi khoảng một lần một tháng với lỗi bộ nhớ ORA-4031. DBA hiện tại đã tìm ra vấn đề là thiếu các biến liên kết trong mã ứng dụng, đây thường là thủ phạm có nhiều khả năng nhất. Thiếu biến ràng buộc là một vấn đề, nhưng ngay sau khi tôi phát hiện ra, vấn đề hoàn toàn không liên quan đến các câu lệnh SQL. Thay vào đó, vấn đề là do một lỗi với Direct NFS. Rõ ràng là Direct NFS đã bị rò rỉ bộ nhớ trong đó. Sự cố rò rỉ bộ nhớ đã ảnh hưởng đến Nhóm chia sẻ và nếu có đủ thời gian, bộ nhớ trống trong Nhóm chia sẻ trở nên không tồn tại, lỗi ORA-4031 sẽ được tung ra và cơ sở dữ liệu sẽ bị sập.
Tôi đã làm việc với Bộ phận hỗ trợ của Oracle để xác nhận rằng đây là một lỗi. Sự cố này đã được gửi dưới dạng Lỗi 10237987 và ảnh hưởng đến các phiên bản 11.1.0 và 11.2.0. Tôi đã gặp lỗi này trên một cụm RAC 3 nút chạy Oracle Enterprise Linux. Tôi không bao giờ có thể nhận được câu trả lời nếu lỗi này xảy ra trên các nền tảng hệ điều hành khác hoặc cho các môi trường không phải RAC. Lỗi khiến các nhóm KGNFS trong Nhóm chia sẻ tăng lên đáng kể theo thời gian.
Tôi rất tiếc rằng tôi đã không bao giờ có thể nhìn thấy lỗi này để kết luận với Bộ phận hỗ trợ của Oracle. Bộ phận hỗ trợ muốn tôi ghi lại dấu vết khi cơ sở dữ liệu gặp sự cố do lỗi ORA-4031 với nhóm KGNFS. Những gì họ không nhận ra là các nhóm KGNFS gây ra tình trạng thiếu không gian trong tất cả các nhóm khác trong Nhóm Chia sẻ. Các nhóm KGNFS sẽ vắt kiệt các nhóm khác và thường khi dung lượng được yêu cầu trong các nhóm khác thì lỗi ORA-4031 đã đạt đến. Và lần duy nhất các tệp theo dõi được tạo là để đợi (các) phiên bản bị lỗi. Tôi không thể ngồi chờ các phiên bản của chúng tôi gặp sự cố vào giữa ngày chỉ để chụp một tệp theo dõi cho Bộ phận hỗ trợ của Oracle, đặc biệt là vì tệp theo dõi thậm chí có thể không phải từ các nhóm KGNFS!
Cuối cùng, cách giải quyết của chúng tôi là ngừng sử dụng Direct NFS trong cấu hình của chúng tôi. Thử nghiệm của chúng tôi cho thấy không có sự khác biệt về hiệu suất khi có hoặc không có Direct NFS. Kể từ khi chúng tôi bỏ sử dụng Direct NFS, chúng tôi đã không thấy bất kỳ lỗi ORA-4031 nào. Tôi thấy lỗi vẫn còn trên Metalink nhưng chưa có bản sửa lỗi nào.