Linux/Unix shell 监控Oracle监听器(monitor listener)
使用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 :http://blog.csdn.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,未考虑缺省监听器的情形,如使用缺省监听器请做相应更改。
c、使用了数组的方式来定义实例名,每一个对应一个监听器,确保DB_COUNT的值与需要监控的监听器个数相符。
d、数组的每一个元素使用的是ORACLE_SID,如果是RAC,可以将其改为主机名。
e、如果检测到监听器宕掉的情形则会自动重启监听并发送邮件。
f、使用了sendEmail邮件发送程序来发送邮件。参阅:不可或缺的 sendEmail
g、通过crontab来部署该脚本。另,Oracle 10g测试可用,Oracle 11g待测。
转:http://blog.csdn.net/leshami/article/details/8563744
Linux/Unix shell 监控Oracle监听器(monitor listener)的更多相关文章
- Linux/Unix shell 监控Oracle实例(monitor instance)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 监控Oracle告警日志(monitor alter log file)
使用shell脚本实现对Oracle数据库的监控与管理将大大简化DBA的工作负担,如常见的对实例的监控,监听的监控,告警日志的监控,以及数据库的备份,AWR report的自动邮件等.本文给出Linu ...
- Linux/Unix shell 脚本中调用SQL,RMAN脚本
Linux/Unix shell脚本中调用或执行SQL,RMAN 等为自动化作业以及多次反复执行提供了极大的便利,因此通过Linux/Unix shell来完成Oracle的相关工作,也是DBA必不可 ...
- Linux/Unix shell sql 之间传递变量
灵活结合Linux/Unix Shell 与SQL 之间的变量传输,极大程度的提高了DBA的工作效率,本文针对Linux/Unix shell sql 之间传递变量给出几个简单的示例以供参考. Lin ...
- Linux/Unix shell 自动发送AWR report(二)
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告.不过awrrpt.sql脚本执行时需要我们提供一些交互信 ...
- Linux/Unix shell 脚本监控磁盘可用空间
Linux下监控磁盘的空闲空间的shell脚本,对于系统管理员或DBA来说,必不可少.下面是给出的一个监控磁盘空间空间shell脚本的样本,供大家参考. 1.监控磁盘的空闲空间shell脚本 robi ...
- Linux/Unix shell 自动发送AWR report
观察Oracle数据库性能,Oracle自带的awr 功能为我们提供了一个近乎完美的解决方案,通过awr特性我们可以随时从数据库提取awr报告.不过awrrpt.sql脚本执行时需要我们提供一些交互信 ...
- Linux Unix shell 编程指南学习笔记(第五部分)
第二十五章 深入讨论 << 当shell 看到 << 的时候,它知道下一个词是一个分界符.该分界符后面的内容都被当做输入,直到shell又看到该分界符(位于单独的一行).比方: ...
- Linux/UNIX环境下Oracle数据库多实例开机启动脚本(转)
操作系统平台:RHEL 5Shell环境:BashOracle:10g2 功能描述:开机时自动切换到oracle用户下,启动oracle的多个实例.并记录数据库的启动情况到自定义的日志文件中. #!/ ...
随机推荐
- UVA 10780 Again Prime? No Time. 分解质因子
The problem statement is very easy. Given a number n you have to determine the largest power of m,no ...
- struts2实现选择i18n语言选择切换
[新手学习记录,仅供参考!] 1.项目准备 首先当然是我们得创建一个struts2的web项目,并且已经实现了一个简单的功能. 以下通过登录功能来举例说明. 2.指定全局国际化资源文件 在struts ...
- lua 的 WriteFile 和 ReadFile
lua 的 ReadFile 和 WriteFile 注意: lua 代码中的 string 可以包含二进制数据 string.len(str) 不会被 '\0' 截断 从 lua 传入 c 时: 需 ...
- iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息
如何添加大头针(地标): 通过MapView的addAnnotation方法可以添加一个大头针到地图上 通过MapView的addAnnotations方法可以添加多个大头针到地图上 –(void)a ...
- JVM内存区域划分
前言 Java程序的运行是通过Java虚拟机来实现的.通过类加载器将class字节码文件加载进JVM,然后根据预定的规则执行.Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同 ...
- 3、Object对象的两大方法(hashCode-equals)总结
Object类是所有java类的父类. 用户定义了如下一个Person类 public class Person{} 在类定义中并没有明确继承Object类,但是编译器会自动的完成这个过程. 既然所有 ...
- iphone 6 设置自定义铃声(未越狱)
环境: ipone 6 iTunes 12.4.0.119 IOS 9.3.2 先把需要设置的铃声下载到电脑上,然后打开iTunes下的文件->将文件添加到资料库,如图: 2.在音乐列表里右击所 ...
- SQL创建链接服务器
二.--创建链接服务器 exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址' exec sp_addlinkedsrvlogin ...
- Debugging JTAG Connectivity Problems
2013-12-04 22:34:26 转自:http://processors.wiki.ti.com/index.php/Debugging_JTAG_Connectivity_Problems ...
- Virtualbox: Shared directory- “unknown filesystem type vboxsf”
1. "设置”中,"共享文件夹”,把要共享的文件夹添加上. 2. 然后打开系统,找到“安装增强功能”,这时桌面上多了一个光盘或者看/media/下面是不是已经文件了,虽然这个时候可 ...