oracle中如何获取两天内的告警日志

网友投稿 372 2023-12-30 13:46:00

oracle中如何获取两天内的告警日志

这篇文章将为大家详细讲解有关oracle中如何获取两天内的告警日志,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

#!/bin/bash

#author: Rui Zhang

#date: 2017-08-09

#email: sharpzhang_2008@126.com 

export LANG=en_US.UTF-8

dir_name=/tmp/tday_log/

log_name=/tmp/tday_log/tday_log_`date +%F`

log_name=/tmp/tday_log/10.4.57.129_tday_`date +%F`.log

yday=`date -d -1day +%a %b %d `

tday=`date +%a %b %d `

yday_num=`date -d -1day +%F`

tday_num=`date +%F`

yday_md=`date -d -1day +%b %e `

tday_md=`date +%b %e `

yday_lis=`date -d -1day +%d-%b-%Y | tr [a-z] [A-Z]`

tday_lis=`date +%d-%b-%Y | tr [a-z] [A-Z]`

if [ ! -d "$dir_name" ];then

mkdir -p $dir_name

fi

if [ -f "$log_name" ];then

  rm -f $log_name

fi

echo "###########################/var/log/messages################################" >> $log_name

echo "" >> $log_name

echo "" >> $log_name

egrep "${yday_md}|${tday_md}" /var/log/messages >> $log_name

#egrep "Jul\  3|Jul\  2" /var/log/messages >> $log_name

echo "" >> $log_name

function chk_db_log(){

file_name=$1

count_1=0

while read line

do

count_1=$[$count_1+1];

if [[ $line =~ $yday ]];then

break

elif [[ $line =~ $tday ]];then

break

fi

done <$file_name

count_3=`wc -l ${file_name} |awk {print $1}`

if [ "$count_1" = "$count_3" ];then

 count_1=$[$count_1+1];

fi

echo "当前指针位置:${count_1} 文件行数:${count_3} 文件名:${file_name}"

count_2=0

while read line

do

  count_2=$[$count_2+1]

if (($count_2>=count_1));then

echo "$line" >>$log_name

fi

done <$file_name

echo "" >> $log_name

}

function chk_grid_log(){

file_name=$1

count_1=0

while read line

do

  count_1=$[$count_1+1];

if [[ $line =~ $yday_num ]];then

break

elif [[ $line =~ $tday_num ]];then

break

fi

#  echo $line

#echo $count_1

#done

done <$file_name

#echo $count_1

count_3=`wc -l ${file_name} |awk {print $1}`

if [ "$count_1" = "$count_3" ];then

count_1=$[$count_1+1];

fi

echo "当前指针位置:${count_1} 文件行数:${count_3} 文件名:${file_name}"

count_2=0

while read line

do

count_2=$[$count_2+1]

if (($count_2>=count_1));then

echo "$line" >>$log_name

fi

#done

done <$file_name

echo "" >> $log_name

}

function chk_listener_log(){

file_name=$1

count_1=0

while read line

do

count_1=$[$count_1+1];

if [[ $line =~ $yday_lis ]];then

break

elif [[ $line =~ $tday_lis ]];then

break

fi

#  echo $line

#echo $count_1

#done

done <$file_name

#echo $count_1

count_3=`wc -l ${file_name} |awk {print $1}`

if [ "$count_1" = "$count_3" ];then

 count_1=$[$count_1+1];

fi

echo "当前指针位置:${count_1} 文件行数:${count_3} 文件名:${file_name}"

count_2=0

while read line

do

  count_2=$[$count_2+1]

if (($count_2>=count_1));then

echo "$line" >>$log_name

fi

#done

done <$file_name

echo "" >> $log_name

}

#echo $count_1

echo "############################db_log##########################################" >> $log_name

echo "" >> $log_name

echo "" >> $log_name

chk_db_log /u01/app/oracle/diag/rdbms/test/test1/trace/alert_test1.log

echo "############################asm_log#########################################" >> $log_name

echo "" >> $log_name

echo "" >> $log_name

chk_db_log /u01/app/oracle/diag/asm/+asm/+ASM1/trace/alert_+ASM1.log

echo "############################grid_log########################################" >> $log_name

echo "" >> $log_name

echo "" >> $log_name

chk_grid_log /u01/app/11.2.0/grid/log/zhangr/alertzhangr.log

echo "########################listener_log########################################" >> $log_name

echo "" >> $log_name

echo "" >> $log_name

##############11g###########################

#chk_grid_log /u01/app/oracle/diag/tnslsnr/zhangr/listener/alert/log.xml

##############11g###########################

##############10g###########################

chk_listener_log /u01/app/oracle/diag/tnslsnr/zhangr/listener/trace/listener.log

##############10g###########################

关于“oracle中如何获取两天内的告警日志”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Oracle中如何获取v$latch数据源实验
下一篇:如何抓取最大的tmstmp
相关文章