نگهداشت LogFileهای اوراکل با کمک سرویس Logrotate

در هنگام استفاده از بانک اطلاعاتی اوراکل باید مراقب رشد یکباره لاگ فایلهایی چون alert log، listener log و … بود.

از جمله دلایلی که سبب رشد یکباره این فایلها می شود، می توان به تکرار مکرر خطاها در این محیط اشاره کرد این خطاها ممکن است تا حدی بر روی این LogFileها اثرگذار باشند که سبب پرشدن فضای سیستم شده و در نهایت مانع از ادامه سرویس دهی بانک شوند. البته حتی اگر این رشد سریع، مانع از توقف سرویس نشود، حداقل رجوع(مشاهده و جستجو) به LogFileها را بسیار کند خواهد کرد پس لاجرم باید به فکر راهکاری بود تا از رخ دادن احتمالی این مسئله جلوگیری کرد.

در محیط لینوکس برای مدیریت حجمی این نوع فایلها(LogFileها)، می توان از logrotate بهره گرفت. با کمک logrotate می توان تصمیم گرفت LogFileها بعد از چه مدتی ارشیو شوند؟ چه تعداد از ارشیوهای مربوط به این لاگها در سرور نگه داشته شود؟ همچنین مسائلی چون فشرده سازی در مورد ارشیوها اعمال شود یا خیر؟؟؟ و ….

در مورد هر کدام از این قابلیتها، پارامترهایی در سرویس logrotate وجود دارد که تعدادی از این پارامتر ها را مختصرا شرح خواهیم داد:
پارامتر rotate: حداکثر چند نسخه از ارشیو در سیستم نگه داشته شود؟
پارامتر size:حجم LogFile باید به چه اندازه ای برسد تا logrotate صورت بگیرد؟
پارامتر compress: فشرده سازی انجام شود؟
پارامتر prerotate: قبل از انجام logrotate، چه کاری باید صورت پذیرد؟

برای استفاده از سرویس logrotate باید فایلی را در مسیر /etc/logrotate.d ایجاد کرد(و یا از فایل /etc/logrotate.conf استفاده نمود) در ادامه با ایجاد فایلی به نام alert_log در این مسیر، قصد مدیریت فایل alert log مربوط به بانک اطلاعاتی را داریم:

vi /etc/logrotate.d/alert_log
/oracle/diag/rdbms/test/usefdb1/trace/*.log{
rotate 4
create 0644 oracle oinstall
size 5k
compress
prerotate
date »logrotate_date.log
endscript
}

بر طبق تنظیمات فایل alert_log، تا زمانی که فایل alert log(به طور دقیق تر، تمامی فایلهایی که نام انها با .log تمام می شود) حجمی کمتر از 5k دارد، با اجرای دستور logrotate، ارشیو نخواهد شد همچنین بعد از ایجاد ارشیو از این فایل(در صورت دارا بودن شرایط لازم)، فایل alert log جدید با مجوز 644 ایجاد خواهد شد(همراه با مالکیت oracle:oinstall) و نهایتا تا 4 نسخه از ارشیو این فایل حفظ خواهد شد در ضمن قبل از انجام logrotate، تاریخ انجام ان در فایل logrotate_date.log نیز ثبت خواهد شد.

قبل از انجام logrotate فایل alert_log، وضیعت فعلی را بررسی می کنیم:

[root@amad1 trace]# ls -hl *.log
-rw-r—— 1 oracle asmadmin 2.6M Mar 28 10:33 alert_usefdb1.log

برای اجرای logrotate به صورت دستی، می توان از دستور زیر استفاده کرد:

logrotate /etc/logrotate.d/alert_log

با اجرای این دستور، فایل مربوط به alert log که حجمی بیش از دو مگابایت دارد، ارشیو خواهد شد:

[root@amad1 trace]# ls -hl alert_usefdb1.log*
-rw-r–r— 1 oracle oinstall 0 Mar 28 15:24 alert_usefdb1.log
-rw-r—— 1 oracle asmadmin 2.6M Mar 28 10:33 alert_usefdb1.log.1

پ.ن برای انجام دوره ای logrotate، می توان دستور مربوطه را در crontab تنظیم کرد البته این کار به صورت خودکار، یکبار در روز انجام می شود:

/etc/cron.daily/logrotate

دیدگاهتان را بنویسید