در هنگام نصب Oracle Grid Infrastructure یا Oracle Database روی لینوکس، سیستم نصبکننده (Oracle Universal Installer) قبل از شروع نصب، مجموعهای از پیشنیازهای سیستم را بررسی میکند. یکی از این پیشنیازها وجود فضای Swap کافی در سیستم است.
در این سناریو هنگام اجرای دستور نصب Grid Infrastructure با خطای کمبود Swap مواجه شدیم. در ادامه روند شناسایی مشکل و رفع آن به صورت مرحلهبهمرحله توضیح داده شده است.
فرآیند از زمانی شروع شد که دستور زیر برای نصب Grid Infrastructure همراه با Patch اجرا شد:
./gridSetup.sh -applyRU /u01/sources/38629535/
در حین اجرای نصب، بررسی پیشنیازهای سیستم انجام شد و خطای زیر نمایش داده شد:
The file oraparam.ini could not be found at /u01/app/19c/grid/oui/bin/oraparam.ini
Using paramFile: /u01/app/19c/grid/oui/oraparam.ini
Checking swap space: 0 MB available, 500 MB required. Failed <<<<
این پیام نشان میدهد که سیستم هیچ فضای Swap فعالی ندارد در حالی که نصب Oracle حداقل 500MB Swap نیاز دارد.
همچنین فرآیند آمادهسازی Patch متوقف شد:
Preparing the home to patch failed.
بررسی وضعیت حافظه سیستم
ابتدا وضعیت حافظه و Swap سیستم بررسی شد:
swapon --show
free -h
خروجی نشان داد که سیستم دارای 31 گیگابایت RAM است اما هیچ Swap فعالی ندارد:
Mem: 31Gi total
Swap: 0B
بنابراین باید یک Swap به سیستم اضافه میکردیم.
ایجاد Swap File در لینوکس
به جای ساخت پارتیشن جداگانه، سادهترین روش ایجاد یک Swap File است.
ایجاد فایل Swap
در این مرحله یک فایل Swap به اندازه 2 گیگابایت ایجاد شد:
fallocate -l 2G /swapfile
تنظیم سطح دسترسی فایل
برای امنیت سیستم، فایل Swap باید فقط توسط کاربر root قابل دسترسی باشد:
chmod 600 /swapfile
تبدیل فایل به فضای Swap
سپس فایل ایجاد شده به فرمت Swap تبدیل شد:
mkswap /swapfile
فعالسازی Swap
بعد از آمادهسازی، Swap فعال شد:
swapon /swapfile
برای اطمینان از فعال شدن Swap مجدداً حافظه بررسی شد:
free -h
دائمی کردن Swap بعد از ریبوت
برای اینکه Swap بعد از ریبوت سیستم نیز فعال باقی بماند، باید آن را در فایل fstab اضافه کنیم.
ویرایش فایل:
vi /etc/fstab
و اضافه کردن خط زیر:
/swapfile none swap sw 0 0
تنظیم پارامتر Swappiness
پارامتر swappiness مشخص میکند که سیستم چه میزان تمایل دارد از Swap استفاده کند.
مقدار پیشفرض معمولاً 60 است.
بررسی مقدار فعلی:
cat /proc/sys/vm/swappiness
برای کاهش استفاده از Swap در سرورهای دیتابیسی، مقدار آن به 10 تغییر داده شد:
sysctl vm.swappiness=10
برای دائمی کردن آن نیز می توان مقدار
vm.swappiness=10
در فایل
/etc/sysctl.conf
اضافه کرد و سپس برای اطمینان از اعمال و عدم وجود مشکل دستور
sysctl -p
را زد.