سلام
یه مقاله به آدرس زیر چند وقت پیش در مورد huge page نوشته بودم:
https://vahiddb.com/fa/oracle/database-performance/hugepage-setting-fa
حالا میخوام در مورد برخی مشکلاتی که ممکن هست پیش بیاد و خودم هم باهاش مواجه شدم هم بنویسم.خطایی که ممکن هست باهاش مواجه بشیم اینه:
ORA-27137: unable to allocate large pages to create a shared memory segment
Linux-x86_64 Error: 12: Cannot allocate memory
که دقیق تو alert log نوشته که چند تا page میخواسته و چند تا به دست آورده.
این خطا نشان میدهد که اوراکل تلاش میکند تا از Huge Pages استفاده کند، اما به دلیل کمبود حافظه یا تنظیمات ناکافی، قادر به تخصیص حافظه لازم برای ایجاد یک بخش حافظه مشترک نیست. در ادامه به چند راهکار برای رفع این خطا میپردازیم.
قبل از اینکه شروع کنم، این نکته مهم رو بخاطر داشته باشید که قبل از ریستارت دیتبایس در صورتی که تغییری در پارامترهایی که احتیاج به ریستارت دارند، داشتید، حتما یه pfile تهیه کنید.
مراحل رفع خطای ORA-27137
1. بررسی و افزایش تعداد Huge Pages
یکی از اولین اقدامات، افزایش تعداد huge page در تنظیمات sysctl.conf است. با توجه به نیازهای SGA، باید vm.nr_hugepages را به اندازه کافی تنظیم کنید. برای مثال:
vm.nr_hugepages=4096 # افزایش تعداد huge page بر اساس نیاز
سپس تنظیمات جدید را با اجرای دستور زیر اعمال کنید:
sysctl -p
2. اطمینان از تخصیص حافظه کافی به گروه کاربری اوراکل
گاهی ممکن است شماره گروه کاربری اوراکل به درستی تنظیم نشده باشد و اجازه دسترسی به Huge Pages را نداشته باشد. این مقدار باید در sysctl.conf به صورت زیر تنظیم شود:
vm.hugetlb_shm_group=<oracle_user_group_id>
مقدار <oracle_user_group_id>
را میتوانید با دستور id -g oracle
جایگزین کنید تا شناسه گروه کاربری اوراکل را دریافت کنید.
3. آزادسازی حافظه و کش برای تخصیص فضا
اگر تعداد huge page به اندازه کافی تنظیم شده است، اما همچنان خطا رخ میدهد، به احتمال زیاد حافظه آزاد کافی برای تخصیص موجود نیست. در این حالت، میتوانید حافظه و کش سیستم را با دستور زیر آزاد کنید:
sync; echo 3 > /proc/sys/vm/drop_caches
4. بررسی تخصیص Huge Pages پس از راهاندازی دیتابیس
برای اطمینان از تخصیص صحیح، وضعیت Huge Pages را پس از استارت مجدد دیتابیس بررسی کنید:
grep HugePages /proc/meminfo
این دستور وضعیت huge page را نشان میدهد و میتوانید از تخصیص صحیح آنها اطمینان حاصل کنید.
نتیجهگیری
این مراحل میتوانند به رفع خطای ORA-27137 کمک کنند و اطمینان حاصل شود که دیتابیس به درستی از Huge Pages استفاده میکند. با بررسی alert log و رفع خطاهای مرتبط با کمبود huge page، میتوان به بهینهسازی حافظه سیستم کمک کرد و کارایی دیتابیس اوراکل را بهبود داد.