If this is your first visit, be sure to check out the FAQ by clicking the link above. You may have to register before you can post: click the register link above to proceed. To start viewing messages, select the forum that you want to visit from the selection below.

 
Go Back  dBforums > Data Access, Manipulation & Batch Languages > Unix Shell Scripts > Help with script to read alert log

Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1 (permalink)  
Old 06-06-11, 10:10
tspoon tspoon is offline
Registered User
 
Join Date: Jun 2005
Posts: 23
Help with script to read alert log

Hi,

I am working on this script, which I want it to open the alert log and email any ORA error messages

================================================== =========

export SID=$ORACLE_SID
export TIMESTAMP=`date +%M%H%d%m%y`;
export mon_dir=$ORACLE_BASE/admin/DCTMTEST/dbmonitor
export fn=$mon_dir/email_body.tmp
export alertck=$mon_dir/alertck.log
touch $alertck*
touch $fn
touch $ORACLE_BASE/admin/DCTMTEST/dbmonitor/donot_delete.log
EMAIL='name@company.com'
adrci << EOF
spool $mon_dir/alert_$TIMESTAMP.log
set termout off
set homepath diag/rdbms/$ORACLE_SID/$ORACLE_SID
SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-%'" -term
spool off
exit
EOF
export c_log=`wc -l $mon_dir/alert_$TIMESTAMP.log awk '{ print $1 }'`
export c_tmp=`wc -l $mon_dir/donot_delete.log awk '{ print $1 }'`
echo $c_log
echo $c_tmp
if (($(($c_log)) > $(($c_tmp)))); then
comm -23 $mon_dir/alert_$TIMESTAMP.log $mon_dir/donot_delete.log grep ORA- sort -u > $alertck
exec 3< $alertck
# read until the end of the file
until [ $done ]
do
read <&3 ERR_LINE
if [ $? != 0 ] then
done=1
continue
fi
echo $ERR_LINE >> $fn
export ERR_NO=`echo $ERR_LINE awk '{ print $1 }'awk -F- '{ print $2 }' awk -F: '{ print $1 }'`
echo " Oracle error is : ORA-$ERR_NO"
oerr ora $ERR_NO >> $fn
echo " " >> $fn
echo "-----------------------------------------------------" >> $fn
echo " " >> $fn
'done'
echo "ERRORS: sending mail!"
SUBJECT="$SID - ORA Error Message found in alert.log on `date`"
echo $SUBJECT
# from a Linux server, use following line to send email:
cat $fn mail -s "$SUBJECT" $EMAIL
else
echo "No Oracle error is found in alert.log since last time this script was run."
'fi'
mv $mon_dir/alert_$TIMESTAMP.log $mon_dir/donot_delete.log
rm $fn
echo "The script was executed successfully."

================================================== =======

The output is as follows:-

[oracle@ukedxdtmtdbs01a ~]$ export SID=$ORACLE_SID
[oracle@ukedxdtmtdbs01a ~]$ export TIMESTAMP=`date +%M%H%d%m%y`;
[oracle@ukedxdtmtdbs01a ~]$ export mon_dir=$ORACLE_BASE/admin/DCTMTEST/dbmonitor
[oracle@ukedxdtmtdbs01a ~]$ export fn=$mon_dir/email_body.tmp
[oracle@ukedxdtmtdbs01a ~]$ export alertck=$mon_dir/alertck.log
[oracle@ukedxdtmtdbs01a ~]$ touch $alertck*
[oracle@ukedxdtmtdbs01a ~]$ touch $fn
[oracle@ukedxdtmtdbs01a ~]$ touch $ORACLE_BASE/admin/DCTMTEST/dbmonitor/donot_delete.log
EMAIL=[oracle@ukedxdtmtdbs01a ~]$ EMAIL='name@company.com'
[oracle@ukedxdtmtdbs01a ~]$ adrci << EOF
> spool $mon_dir/alert_$TIMESTAMP.log
> set termout off
s> set homepath diag/rdbms/$ORACLE_SID/$ORACLE_SID
> SHOW ALERT -P "MESSAGE_TEXT LIKE '%ORA-%'" -term
> spool off
> exit
> EOF

ADRCI: Release 11.2.0.1.0 - Production on Mon Jun 6 14:53:38 2011

Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.

ADR base = "/u01/app/oracle"
adrci> adrci> adrci> adrci> export c_log=`wc -l $mon_dir/alert_$TIMESTAMP.log awk '{ print $1 }'`
export c_tmp=`wc -l $mon_dir/donot_delete.log awk '{ print $1 }'`
echo $c_log
echo $c_tmp
if (($(($c_log)) > $(($c_tmp)))); then
comm -23 $mon_dir/alert_$TIMESTAMP.log $mon_dir/donot_delete.log grep ORA- sort -u > $alertck
exec 3< $alertck
# read until the end of the file
until [ $done ]
do
read <&3 ERR_LINE
if [ $? != 0 ] then
done=1
continue
fi
echo $ERR_LINE >> $fn
export ERR_NO=`echo $ERR_LINE awk '{ print $1 }'awk -F- '{ print $2 }' awk -F: '{ print $1 }'`
echo " Oracle error is : ORA-$ERR_NO"
oerr ora $ERR_NO >> $fn
echo " " >> $fn
echo "-----------------------------------------------------" >> $fn
echo " " >> $fn
'done'
echo "ERRORS: sending mail!"
SUBJECT="$SID - ORA Error Message found in alert.log on `date`"
echo $SUBJECT
# from a Linux server, use following line to send email:
cat $fn mail -s "$SUBJECT" $EMAIL
else
echo "No Oracle error is found in alert.log since last time this script was run."
'fi'
mv $mon_dir/alert_$TIMESTAMP.log $mon_dir/donot_delete.log
rm $fn
echo "The script was executed successfully."


================================================== =======

Can someone confirm that this script is fine. If that is the case and the script is working as it should,
how do I include a line to send an email - stating that there are no errors, and the alert log is fine.

Much appreciated for your feedback

Last edited by tspoon; 06-07-11 at 03:26.
Reply With Quote
  #2 (permalink)  
Old 06-08-11, 09:31
tspoon tspoon is offline
Registered User
 
Join Date: Jun 2005
Posts: 23
fixed - now working
Reply With Quote
Reply

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On