همانطور که می دانید اوراکل فایلهای Alert Log را به دو فرمت xml(در دایرکتوری diag/../alert) و text(در دایرکتوری diag/../trace) ایجاد می کند و در این فایلها، اطلاعاتی در مورد عملیات log switch، تنظیم پارامتر ها، پیامهای مربوط به startup و shutdown دیتابیس و همچنین گزارش بعضی از خطهای دیتابیسی و … را ثبت می کند.
[root@oLinux7 trace]# ls *alert*
alert_db21c.log
[root@oLinux7 alert]# ls log*
log.xml
این فایلها مستعد رشد هستند و در صورت عدم مداخله DBA ممکن است حجم آنها به چند گیگابایت برسد و تا قبل از اوراکل نسخه 21cء، rotation خودکاری برای این فایلها انجام نخواهد شد.
در نسخه 21c قابلیت rotate خودکار این فایلها توسط اوراکل به وجود آمد و اوراکل مدیریت عملیات rotate را با ارائه سه hidden parameter زیر امکان پذیر کرده است:
alert_segment_size_: سایز فایلهای Alert Log باید به چند مگابایت برسد تا عملیات rotation انجام شود. البته این مقدار سایز لاگ فایلهای xmlای را مشخص می کند و اندازه فایل alert_$ORACLE_SID.log، معمولا درصد ثابتی از لاگ فایلهای xmlای خواهد بود. مقدار این پارامتر بر مبنای مگابایت تنظیم می شود.
alert_segment_textfile_: به صورت پیش فرض عملیات rotation صرفا برای فایلهای xmlای انجام می شود. با تنظیم این پارامتر به مقدار TRUE، فایل alert_$ORACLE_SID.log هم rotate خواهد شد(مطابق فرمول بیان شده).
alert_segments_max_: مدتی بعد از عملیات log rotate، تعداد زیادی logfile در سرور موجود خواهند بود با کمک این پارامتر تعیین می کنیم که چه تعداد از لاگ فایلهای آرشیو شده در سرور باقی بمانند بنابرین اگر تعداد Alert Logها از مقدار تعیین شده برای این پارامتر تجاوز کند، فایلهای قدیمی تر پاک خواهند شد.
برای بررسی تاثیر این پارامترها، هر یک از آنها را به مقداری تنظیم می کنیم:
SQL> alter system set “_alert_segment_textfile“=true;
System altered.
SQL> alter system set “_alert_segment_size“=100;
System altered.
SQL> alter system set “_alert_segments_max“=3;
System altered.
حجم فعلی alert_$ORACLE_SID.log و log.xml را در قسمت زیر مشاهده می کنید:
[root@oLinux7 trace]# ls -lhs *alert*
960K -rw-r—– 1 oracle oinstall 694K Sep 15 20:04 alert_db21c.log
[root@oLinux7 alert]# ls -lh
-rw-r—– 1 oracle oinstall 5.6M Sep 15 20:04 log.xml
برای آنکه اثر پارامترهای فوق را مورد بررسی قرار دهیم، لازم است تا حجم فایل log.xml را به 100 مگابایت برسانیم(با توجه به مقدار پارامتر alert_segment_size_). این کار را با اجرای بلاک زیر که عبارتی را در alert log ثبت می کند، انجام خواهیم داد:
begin
for i in 1 .. 1300000 loop
begin
dbms_system.ksdwrt(2,
‘IRAN IRANNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN’);
end;
end loop;
end;
/
با اجرای این بلاک plsqlای خواهیم دید که عملیات Rotation برای alert logها انجام شده و از هر کدام از انواع alert log صرفا سه نسخه نگه داشته خواهد شد:
[root@oLinux7 alert]# ls -lh
-rw-r—– 1 oracle oinstall 101M Sep 15 20:11 log_5.xml
-rw-r—– 1 oracle oinstall 101M Sep 15 20:11 log_6.xml
-rw-r—– 1 oracle oinstall 101M Sep 15 20:11 log_7.xml
-rw-r—– 1 oracle oinstall 28M Sep 15 20:11 log.xml
[root@oLinux7 trace]# ls -lhs *alert*
-rw-r—– 1 oracle oinstall 13M Sep 15 20:11 alert_db21c_5.log
-rw-r—– 1 oracle oinstall 13M Sep 15 20:11 alert_db21c_6.log
-rw-r—– 1 oracle oinstall 13M Sep 15 20:11 alert_db21c_7.log
-rw-r—– 1 oracle oinstall 3.4M Sep 15 20:11 alert_db21c.log