如何监控Ubuntu Oracle状态
导读:一、前提准备 在Ubuntu上监控Oracle数据库前,需确保以下条件满足: Oracle数据库已正常部署并运行; 已安装Oracle Instant Client(用于远程连接或本地工具依赖),可通过sudo apt update &a...
一、前提准备
在Ubuntu上监控Oracle数据库前,需确保以下条件满足:
- Oracle数据库已正常部署并运行;
- 已安装Oracle Instant Client(用于远程连接或本地工具依赖),可通过
sudo apt update & & sudo apt install libaio1安装基础依赖,再下载Oracle Instant Client包并配置环境变量(如LD_LIBRARY_PATH); - 具备Oracle DBA权限(用于执行监控命令和访问性能视图)。
二、命令行工具监控(基础且高效)
1. lsnrctl:监听器状态监控
lsnrctl是Oracle提供的监听器管理工具,用于检查监听器是否正常运行及监听服务状态。
- 查看监听器基本状态:执行
lsnrctl status,输出内容包括监听器名称、版本、启动时间、监听地址(如IP:端口)及绑定的服务名(如ORCL); - 查看详细服务信息:执行
lsnrctl services,可获取每个服务的状态(如READY表示正常)、当前连接数、服务类型(如数据库服务); - 实时查看监听日志:通过
tail -f $ORACLE_HOME/network/log/listener.log实时跟踪监听器日志,快速定位连接失败、服务注册异常等问题。
2. SQL*Plus:数据库实例与性能监控
SQL*Plus是Oracle自带的命令行工具,可通过SQL查询获取实例状态、性能指标及活跃会话信息。
- 检查实例状态:执行
SELECT status FROM v$instance;,若返回OPEN则表示实例正常运行; - 查看当前连接数:执行
SELECT COUNT(*) FROM v$session;,可统计当前数据库连接总数; - 监控活跃SQL:执行
SELECT sql_text, executions, elapsed_time FROM v$sqlarea WHERE executions > 100 ORDER BY elapsed_time DESC FETCH FIRST 5 ROWS ONLY;,可找出执行次数多、耗时长的TOP SQL(需替换条件适配业务场景); - 查看等待事件:执行
SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;,可识别数据库当前的瓶颈(如db file sequential read表示磁盘I/O瓶颈)。
3. 操作系统工具:资源占用监控
Oracle数据库的性能与Ubuntu系统的CPU、内存、磁盘I/O密切相关,可通过以下命令监控:
- top/htop:实时查看系统进程的资源占用(如CPU、内存),通过
top -u oracle过滤出Oracle相关进程; - vmstat:监控虚拟内存、进程、CPU活动,执行
vmstat 1 5(每1秒采样1次,共5次)可查看内存使用、进程阻塞、I/O等待等情况; - iostat:监控磁盘I/O性能,执行
iostat -x 1可查看磁盘的读写速率、I/O等待时间(%util接近100%表示磁盘繁忙); - free:查看内存使用情况,执行
free -h可直观显示内存总量、已用内存、剩余内存及缓存。
三、图形化/开源工具监控(可视化与自动化)
1. Oracle Enterprise Manager (OEM)
OEM是Oracle官方提供的全面监控工具,支持图形化界面、实时性能监控、告警配置及历史数据查询。
- 安装与配置:在Oracle服务器上安装OEM组件(如Grid Control或Cloud Control),通过浏览器访问控制台(如
http://< server-ip> :7802/em),使用DBA账号登录; - 监控内容:可监控数据库实例状态、SGA/PGA命中率、表空间使用率、SQL执行性能、锁等待等指标,支持设置阈值告警(如表空间剩余空间低于10%时发送邮件)。
2. Prometheus + Grafana
适用于需要自定义监控及长期存储的场景,通过oracledb_exporter采集Oracle性能指标,Prometheus拉取数据,Grafana展示可视化面板。
- 安装步骤:
- 安装Oracle Instant Client及Golang环境;
- 下载
oracledb_exporter源码并编译(go build); - 编辑
config.yml配置Oracle连接信息(用户名、密码、服务名); - 启动
oracledb_exporter(./oracledb_exporter -config.file=config.yml); - 配置Prometheus抓取
oracledb_exporter的端口(默认9161); - 在Grafana导入Oracle监控模板(如社区提供的
Oracle Database Monitoring模板),即可查看CPU、内存、SQL执行等可视化图表。
3. Zabbix
企业级开源监控工具,支持Oracle数据库监控模块,可实现表空间、缓存命中率、死锁等指标的监控与告警。
- 配置步骤:
- 安装Zabbix Server及Agent;
- 导入Zabbix Oracle模板(如
orabbix_export_full.xml); - 在Zabbix Agent配置文件中添加Oracle监控项(如
UserParameter=oracle.tablespace.usage[*],sqlplus -s /nolog < < EOF CONNECT username/password@service; SELECT (total_space - used_space)/total_space*100 FROM dba_tablespace_usage_metrics WHERE tablespace_name='$1'; EOF); - 创建监控主机并关联模板,即可查看Oracle监控数据及告警信息。
四、日志与AWR报告分析(深度诊断)
1. 日志文件分析
- alert.log:Oracle数据库的警报日志,记录数据库启动、关闭、错误(如ORA-)等重要信息,路径为
$ORACLE_BASE/diag/rdbms/< db_name> /< instance_name> /trace/alert_< instance_name> .log,可通过tail -f实时查看或grep过滤关键错误; - listener.log:监听器日志,记录客户端连接请求、服务注册情况,路径为
$ORACLE_HOME/network/log/listener.log,用于排查连接失败问题。
2. AWR报告生成与分析
AWR(Automatic Workload Repository)是Oracle自带的性能分析工具,可生成数据库性能基线报告,用于对比分析性能变化。
- 生成AWR报告:执行
@?/rdbms/admin/awrrpt.sql(SQL*Plus中),选择两个时间点(如当前时间与1小时前),生成HTML格式的报告; - 关键内容:报告中包含SQL执行统计(TOP SQL)、SGA/PGA命中率、等待事件分析、实例活动统计等,通过这些指标可定位性能瓶颈(如某条SQL占用了大量CPU资源)。
五、监控脚本自动化(定时采集与告警)
可将常用监控命令封装成Shell/Python脚本,通过cron定时执行,实现自动采集数据与告警。
- 示例脚本(Shell):
#!/bin/bash
# 监控Oracle实例状态
INSTANCE_STATUS=$(sqlplus -s /nolog <
<
EOF
CONNECT sys/password@service AS SYSDBA;
SELECT status FROM v\$instance;
EXIT;
EOF
)
if [ "$INSTANCE_STATUS" != "OPEN" ];
then
echo "[$(date)] Oracle instance is not running!" | mail -s "Oracle Alert" admin@example.com
fi
# 监控表空间使用率
TABLESPACE_USAGE=$(sqlplus -s /nolog <
<
EOF
CONNECT sys/password@service AS SYSDBA;
SELECT tablespace_name, ROUND((total_space - used_space)/total_space*100, 2) AS usage_percent
FROM dba_tablespace_usage_metrics;
EXIT;
EOF
)
echo "Tablespace Usage:\n$tableSPACE_USAGE" >
>
/var/log/oracle_monitor.log
- 定时执行:通过
crontab -e添加任务(如每5分钟执行一次):*/5 * * * * /path/to/script.sh。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何监控Ubuntu Oracle状态
本文地址: https://pptw.com/jishu/735415.html
