分析alert檔案的指令碼

lurou發表於2012-10-12

從itpub上找到的指令碼 ,以後不用愁著分析alert大檔案了。哎,一般上百兆的alert看著都費勁的。好東西。作者:chensq@itpub.net

話說,外部表我也試過了,不好用,這個得試試。

[@more@]{ 
#作者:chensq@itpub.net
if ($0 ~/^Sun/ ||$0 ~/^Mon/ ||$0 ~/^Tue/ ||$0 ~/^Wed/ ||$0 ~/^Thu/ ||$0 ~/^Fri/ ||$0 ~/^Sat/)
{
if(error_found==1 )
{error_found=0
for (i=1;i<=dist_error;i++)
{
if (prt==1)
{
for (j=i+1;j<=dist_error;j++)
{
if (msg==msg[j])
{prt[j]=0}
}
}
}
for (i=1;i<=dist_error;i++)
{
if(prt==1){grp_msg=grp_msg "n" msg}
}
msg_grp_date[ergrp]=dt
msg_grp_err1[ergrp]=err1
msg_grp_msg[ergrp]=substr(grp_msg,2)
grp_msg=""
dt=$0
errors=0
dist_error=0
err1=""
}
}
else if ($0 ~/^ORA-/ && errors==0)
{
ergrp++
error_found=1
errors=1
err_msg =$0
err1=$0
dist_error=1
msg[dist_error]=$0
prt[dist_error]=1
last=$0
}
else if (error_found==1 && errors>=1)
{
this=$0
errors++
if (this!=last)
{err_msg=err_msg "n" $0
dist_error++
msg[dist_error]=$0
prt[dist_error]=1
}
last=$0
this=""
}
}
END {
for (i=1;i<=ergrp;i++)
{
all_msg_date=msg_grp_date[ergrp-i+1]
all_msg_err1=msg_grp_err1[ergrp-i+1]
all_msg_msg=msg_grp_msg[ergrp-i+1]
all_msg_prnt=1
}
for (i=1;i<=ergrp;i++)
{
if (all_msg_prnt==1)
{
for (j=i+1;j<=ergrp;j++)
{
if (all_msg_err1==all_msg_err1[j])
{
all_msg_prnt[j]=0
all_msg_prnt++
}
}
}
}
for (i=1;i<=ergrp;i++)
{
if (all_msg_prnt>0)
{
print "["all_msg_prnt"]"all_msg_date
print all_msg_msg
}
}
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26006637/viewspace-1059571/,如需轉載,請註明出處,否則將追究法律責任。

相關文章