Linux Oracle监控与报警设置方法
Linux环境下Oracle数据库监控与报警设置方法
一、基础监控脚本实现(适用于小规模环境)
1. Oracle实例状态监控
通过Shell脚本定期检查Oracle实例进程,若进程不存在则发送邮件告警。脚本需获取ORACLE_SID环境变量,定位告警日志路径,检查实例进程是否存在,若异常则记录日志并通过sendEmail工具发送邮件。
#!/bin/bash
export ORACLE_SID=$1
source ~/.bash_profile
db_stat=$(ps -ef | grep pmon_$ORACLE_SID | grep -v grep | cut -f3 -d_)
if [ -z "$db_stat" ];
then
echo "$(date): $ORACLE_SID instance is down!" >
>
/tmp/db_status.log
mail -s "$ORACLE_SID instance DOWN" dba@example.com <
/tmp/db_status.log
fi
2. Oracle监听器状态监控
监控Oracle监听器进程,若进程不存在则尝试重启,并发送告警邮件。脚本遍历预定义的数据库列表,检查listener_<
SID>
进程,若未运行则执行lsnrctl start命令,并将结果记录到日志文件。
#!/bin/bash
TIMESTAMP=$(date +%Y%m%d%H%M)
LOG_FILE="/tmp/lsnr_status_$TIMESTAMP.log"
for DB in CNBO1 CNBOTST CNMMBO;
do
lsnr_flag=$(ps -ef | grep -i listener_$DB | grep -v grep)
if [ -z "$lsnr_flag" ];
then
echo "Listener for $DB is down. Restarting..." >
>
$LOG_FILE
lsnrctl start listener_$DB >
>
$LOG_FILE 2>
&
1
fi
done
if grep -q "restart listener" $LOG_FILE;
then
mail -s "Listener crashed on $(hostname)" dba@example.com <
$LOG_FILE
fi
3. ADG(Active Data Guard)状态监控
- SCN变化监控:通过两次查询
v$database.current_scn,间隔5秒,若SCN未变化则发送告警,适用于低负载环境。 - 归档日志应用延迟监控:查询
v$archived_log视图,获取备库最近应用的日志时间,若与主库当前时间差超过阈值(如1小时)则告警。
二、第三方监控工具(适用于中大规模环境)
1. Oracle Enterprise Manager (OEM)
Oracle官方提供的全面监控工具,支持集中式监控多个Oracle数据库实例。通过OEM可监控性能指标(CPU、内存、I/O)、空间使用、会话状态、SQL执行情况等,内置告警规则(如Tablespace Full、Database Down),支持邮件、短信等多种通知方式。配置步骤:登录OEM控制台,进入“Preferences”→“Notification Methods”,添加SMTP服务器及邮件地址,设置告警接收人。
2. Zabbix
开源企业级监控工具,通过Zabbix Agent采集Oracle数据库指标(如SGA使用率、PGA使用率、活跃会话数)。需安装Zabbix Oracle模块,配置监控项(如oracle.tablespace.usage)和触发器(如{
oracle:tablespace.usage.avg(5m)}
>
80),触发告警时可通过邮件、钉钉等方式通知。
3. Prometheus + Oracle Exporter
Prometheus是开源时间序列数据库,Oracle Exporter是用于采集Oracle指标的Exporter。通过Prometheus采集Oracle的oci_recovery_service命名空间指标(如恢复窗口使用率、数据库状态),配置Alertmanager规则(如oci_recovery_service_recovery_window_used_percent >
70),触发告警时发送通知。
三、自动化报警配置(邮件/短信通知)
1. Linux系统邮件配置
使用mailx工具配置邮件发送功能,编辑/etc/mail.rc文件,添加SMTP服务器、发件人信息:
set from=oracle_alert@example.com
set smtp=smtp.example.com:25
set smtp-auth=login
set smtp-auth-user=oracle_alert
set smtp-auth-password=your_password
测试邮件发送:echo "Test body" | mailx -s "Test Subject" dba@example.com。
2. OEM通知方法配置
登录OEM控制台,进入“Setup”→“Notification Methods”,添加SMTP服务器信息(如smtp.example.com、端口25),设置发件人邮箱(如dba_alert@example.com),添加接收人邮箱(如dba_team@example.com)。
四、关键监控指标
- 实例状态:数据库是否正常运行(
Instance Status)。 - 监听器状态:监听器是否正常监听(
Listener Status)。 - 性能指标:CPU使用率、内存使用率、磁盘I/O、会话数、SQL执行时间(
CPU Usage、Memory Usage、Disk I/O、Sessions、SQL Execution Time)。 - 空间使用:表空间使用率、归档日志目录空间(
Tablespace Usage、Archive Log Space)。 - ADG状态:SCN变化、归档日志应用延迟(
SCN Change、Archive Log Apply Lag)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Oracle监控与报警设置方法
本文地址: https://pptw.com/jishu/735681.html
