首页 数据库 mysql教程 Linux/Unix shell 监控Oracle监听器(monitor listener)

Linux/Unix shell 监控Oracle监听器(monitor listener)

Jun 07, 2016 pm 05:26 PM
monitor

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

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

Linux Shell的相关参考:

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

Linux/Unix shell sql 之间传递变量

Linux Unix shell 调用 PL/SQL

Linux/Unix shell 监控Oracle实例(monitor instance)

1、监控Oracle监听shell脚本

robin@SZDB:~/dba_scripts/custom/bin> more ck_lsnr.sh
# +-------------------------------------------------------+
# +    CHECK LISTENER STATUS AND RESTART IT WHEN FAILED  |
# +    Author : Robinson                                  |
# +    Blog  :,net/robinson_0612        |
# +    Parameter : No                                    |
# +-------------------------------------------------------+

#!/bin/bash
# --------------------
# Define variable
# --------------------

if [ -f ~/.bash_profile ]; then
. ~/.bash_profile
fi
 
TIMESTAMP=`date +%Y%m%d%H%M`;  export TIMESTAMP
DBALIST="robinson.cheng@12306.com"; export DBALIST
MAILPATH=/users/robin/dba_scripts/sendEmail-v1.56
LOG_DIR=/users/robin/dba_scripts/custom/log
LOG_FILE=${LOG_DIR}/lsnr_status_$TIMESTAMP.log
RETENTION=2

# -----------------------------------------
# Define how many listeners need to monitor
# -----------------------------------------

DB_COUNT=6
DB[1]=CNBO1
DB[2]=CNBOTST
DB[3]=CNMMBO
DB[4]=MMBOTST
DB[5]=SYBO2SZ
DB[6]=CNBO2

# -------------------------
# Begin to check listener
# -------------------------

touch $LOG_FILE
echo "`date` " >>$LOG_FILE
echo " The following listeners are down on `hostname`" >>$LOG_FILE
echo "-----------------------------------------------" >>$LOG_FILE

COUNT=1
while [ $COUNT -le $DB_COUNT ];
do
    for db in ${DB[$COUNT]};
    do
    lsnr_flag=`ps -ef | grep -i listener_${DB[$COUNT]} | grep -v grep`
        if [ -z "$lsnr_flag" ]; then
            echo "The listener for the database ${DB[$COUNT]} is down." >>$LOG_FILE
            echo "=======> restart listener for the database ${DB[$COUNT]}" >>$LOG_FILE
            lsnrctl start listener_${DB[$COUNT]} >>$LOG_FILE
            echo -e "------------------------------------------------------------------\n" >>$LOG_FILE
        fi
    done;
    COUNT=`expr $COUNT + 1`
done;

# --------------------------
# Send Email
# --------------------------

cnt=`grep "restart listener" $LOG_FILE |wc -l`
if [ "$cnt" -gt 0 ];then
    $MAILPATH/sendEmail -f szdb@2gotrade.com -t $DBALIST -u "Listener crashed on `hostname`" -o message-file=$LOG_FILE
else
    rm -rf $LOG_FILE
fi

# ------------------------------------------------
# Removing files older than $RETENTION parameter
# ------------------------------------------------

find ${LOG_DIR} -name "*lsnr_status*" -mtime +$RETENTION -exec rm {} \;

exit

oracle@SZDB:/users/robin/dba_scripts/custom/bin> ./ck_lsnr.sh
Feb 01 17:16:34 szdb sendEmail[18611]: Email was sent successfully!
Fri Feb  1 17:16:33 CST 2013      #下面是测试脚本邮件发送包含的内容
 The following listeners are down on SZDB
-----------------------------------------------
The listener for the database CNBO1 is down.
=======> restart listener for the database CNBO1

LSNRCTL for Linux: Version 10.2.0.3.0 - Production on 01-FEB-2013 17:16:33

Copyright (c) 1991, 2006, Oracle.  All rights reserved.

Starting /users/oracle/OraHome10g/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 10.2.0.3.0 - Production System parameter file is
/users/oracle/OraHome10g/network/admin/listener.ora
Log messages written to /users/oracle/OraHome10g/network/log/listener_cnbo1.log
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.101.7.2)(PORT=1901)))

Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.101.7.2)(PORT=1901)))
STATUS of the LISTENER
------------------------
Alias                    listener_CNBO1
Version                  TNSLSNR for Linux: Version 10.2.0.3.0 - Production
Start Date                01-FEB-2013 17:16:33
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level              off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File  /users/oracle/OraHome10g/network/admin/listener.ora
Listener Log File        /users/oracle/OraHome10g/network/log/listener_cnbo1.log
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=192.101.7.2)(PORT=1901)))
Services Summary...
Service "CNBO1" has 1 instance(s).
  Instance "CNBO1", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully
------------------------------------------------------------------

2、补充

a、上面的监控监听脚本可以监控多个监听器。

b、监听器的名字的定义格式为LISTENER_$ORACLE_SID,未考虑缺省监听器的情形,,如使用缺省监听器请做相应更改。

b、使用了数组的方式来定义实例名,每一个对应一个监听器,确保DB_COUNT的值与需要监控的监听器个数相符。

c、数组的每一个元素使用的是ORACLE_SID,如果是RAC,可以将其改为主机名。

d、如果检测到监听器宕掉的情形则会自动重启监听并发送邮件。

e、使用了sendEmail邮件发送程序来发送邮件。参阅:不可或缺的 sendEmail

f、通过crontab来部署该脚本。另,Oracle 10g测试可用,Oracle 11g待测。

linux

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

经济实惠的小米游戏显示器 G24i 全球首发,配备 180 Hz 显示屏和 AMD FreeSync 经济实惠的小米游戏显示器 G24i 全球首发,配备 180 Hz 显示屏和 AMD FreeSync Sep 11, 2024 am 06:39 AM

小米游戏显示器G24i已全球首发,它是新系列中最实惠的选择。它配备了 FHD IPS 屏幕,该公司声称这是竞技游戏玩家的理想选择。 23.8英寸面板具有180Hz刷新率和1ms

IFA 2024 | Nitro GS272U M 首次亮相,是 Acer 智能游戏显示器的最新产品 IFA 2024 | Nitro GS272U M 首次亮相,是 Acer 智能游戏显示器的最新产品 Sep 05, 2024 am 06:41 AM

NitroGS272U M 已加入宏碁 CS322Qin 行列,在 IFA 2024 上作为智能显示器推出,不过,前者的支架比 GA 系列前辈更像游戏玩家。它还具有较小的 27 英寸显示屏 - 尽管采用无眩光 WQHD IPS 面板

MSI:经过用户批评,更便宜的游戏 OLED 也将获得固件更新 - 仅在可能昂贵的更新之后 MSI:经过用户批评,更便宜的游戏 OLED 也将获得固件更新 - 仅在可能昂贵的更新之后 Jun 27, 2024 pm 10:03 PM

显示器现在通常可以与广泛的设置选项一起使用,并配有自己的固件。例如,相应的用户界面可以作为固件更新的一部分进行更新,原则上也可以实现新功能 - 或错误

Alienware 推出独特的 27 英寸游戏显示器 AW2725QF,具有双分辨率和刷新率模式 Alienware 推出独特的 27 英寸游戏显示器 AW2725QF,具有双分辨率和刷新率模式 Aug 17, 2024 am 06:52 AM

戴尔刚刚推出了一款新的 27 英寸 IPS 游戏显示器,其具有特殊且相当有用的技巧,应该会吸引发烧友和专业游戏玩家。只需按一下按钮,Alienware AW2725QF 即可在两个组合之间切换

交易 |三星 32 英寸 240 Hz 4K Odyssey Neo G8 游戏显示器在亚马逊促销中获得 43% 的大幅折扣 交易 |三星 32 英寸 240 Hz 4K Odyssey Neo G8 游戏显示器在亚马逊促销中获得 43% 的大幅折扣 Aug 07, 2024 pm 08:52 PM

三星的 Odyssey 游戏显示器系列拥有一些可以买到的最好的游戏显示器,通常提供顶级的功能和规格以及旗舰价格。 Odyssey Neo G8 位于三星 Odyss 的高端

交易 | 34 英寸三星 Odyssey OLED G8 超宽游戏显示器在亚马逊促销中降至有史以来最低价 33% 交易 | 34 英寸三星 Odyssey OLED G8 超宽游戏显示器在亚马逊促销中降至有史以来最低价 33% Aug 08, 2024 pm 01:13 PM

三星目前正在举办游戏周促销活动,对奥德赛系列的许多顶级游戏显示器进行打折。其中一款显示器是三星 Odyssey G85SB OLED(型号 LS34BG850SNXZA),在促销期间大幅折扣。

具有 480 Hz 和 QHD 分辨率的 OLED:LG Display 开始量产新型游戏面板 具有 480 Hz 和 QHD 分辨率的 OLED:LG Display 开始量产新型游戏面板 Sep 05, 2024 am 10:50 AM

LG Display 最近在一份新闻稿中宣布,它已开始大规模生产用于游戏显示器的最新 OLED 面板。具体来说,这是一块 27 英寸 OLED 面板,也是同类中首款实现 480 Hz 帧率的面板,据称

OxiWear 连续血氧耳夹获得 FDA 批准,即使在运动过程中也能发挥作用 OxiWear 连续血氧耳夹获得 FDA 批准,即使在运动过程中也能发挥作用 Aug 31, 2024 pm 09:37 PM

OxiWear 的连续血氧监测仪已获得 FDA 批准,即使在运动过程中也能正常工作。其他显示器只能在用户休息时才能准确测量,或者未经 FDA 批准作为医疗设备以确保准确性和安全性。耳朵-我们

See all articles