>데이터 베이스 >MySQL 튜토리얼 >Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

Linux/Unix shell 监控Oracle告警日志(monitor alter log file)

WBOY
WBOY원래의
2016-06-07 17:26:281250검색

使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以

使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,,以及数据库的备份,AWR report的自动邮件等。本文给出Linux 下使用 shell 脚本来监控 Oracle 告警日志(monitor alter log file)。

Linux Shell的相关参考:

Linux/Unix shell 脚本中调用SQL,RMAN脚本

Linux/Unix shell sql 之间传递变量

Linux Unix shell 调用 PL/SQL

1、监控Oracle告警日志脚本

robin@SZDB:~/dba_scripts/custom/bin> more ck_alert.sh
#!/bin/bash
# --------------------------------------------------------------------------+
#                  CHECK ALERT LOG FILE                                    |
#  Filename: ck_alert.sh                                                  |
#  Desc:                                                                  |
#      The script use to check alert log file.                            |
#      Once any error was caught, a mail alert will be sent.              | 
#      Deploy it by crontab. e.g. per 15 min                              | 
#  Usage:                                                                  |
#      ./ck_alert.sh $ORACLE_SID                                          | 
#                                                                          |
#  Author : Robinson                                                      |
#  Blog  : 0612                            |
# --------------------------------------------------------------------------+
#
# --------------------------
#  Check SID
# --------------------------

if [ -z "${1}" ];then
    echo "Usage: "
    echo "      `basename $0` ORACLE_SID"
    exit 1
fi

# -------------------------------
#  Set environment here
# ------------------------------

if [ -f ~/.bash_profile ]; then
    . ~/.bash_profile
fi

export ORACLE_SID=$1
export MACHINE=`hostname`
export MAIL_DIR=/users/robin/dba_scripts/sendEmail-v1.56
export MAIL_LIST='Robinson.chen@12306.com'
export MAIL_FM='oracle@szdb.com'

# ----------------------------------------------
# check the database is running, if not exit
# ----------------------------------------------

db_stat=`ps -ef | grep pmon_$ORACLE_SID | grep -v grep| cut -f3 -d_`
if [ -z "$db_stat" ]; then
    date >/tmp/db_${ORACLE_SID}_stauts.log
    echo " $ORACLE_SID is not available on ${MACHINE} !!!" >>/tmp/db_${ORACLE_SID}_stauts.log
    MAIL_SUB=" $ORACLE_SID is not available on ${MACHINE} !!!"
    $MAIL_DIR/sendEmail -u $MAIL_SUB -f $MAIL_FM -t $MAIL_LIST -o message-file=/tmp/db_${ORACLE_SID}_stauts.log
    exit 1
fi;

# --------------------------------------
#  Get the location of alert log file
# --------------------------------------

sqlplus '/ as sysdba' /tmp/${ORACLE_SID}_monitor_temp.txt
column xxxx format a10
column value format a80
set lines 132
SELECT 'xxxx' ,value FROM  v\$parameter WHERE  name = 'background_dump_dest'
/
exit
EOF

cat /tmp/${ORACLE_SID}_monitor_temp.txt | awk '$1 ~ /xxxx/ {print $2}' > /tmp/${ORACLE_SID}_monitor_location.txt
read ALERT_DIR rm /tmp/${ORACLE_SID}_monitor_temp.txt 2>/dev/null

# ----------------------------------------
#  Define archive directory and log file
# ----------------------------------------

DT=`date +%Y%m%d`
DT_DIR=`date +%Y%m`
ARCH_DIR=${ALERT_DIR}/${DT_DIR}

if [ ! -d "${ARCH_DIR}" ] ; then
    mkdir $ARCH_DIR
fi

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.