首页主机资讯如何监控Ubuntu Oracle状态

如何监控Ubuntu Oracle状态

时间2025-10-27 09:31:04发布访客分类主机资讯浏览544
导读:一、前提准备 在Ubuntu上监控Oracle数据库前,需确保以下条件满足: Oracle数据库已正常部署并运行; 已安装Oracle Instant Client(用于远程连接或本地工具依赖),可通过sudo apt update &a...

一、前提准备

在Ubuntu上监控Oracle数据库前,需确保以下条件满足:

  1. Oracle数据库已正常部署并运行;
  2. 已安装Oracle Instant Client(用于远程连接或本地工具依赖),可通过sudo apt update & & sudo apt install libaio1安装基础依赖,再下载Oracle Instant Client包并配置环境变量(如LD_LIBRARY_PATH);
  3. 具备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展示可视化面板。

  • 安装步骤
    1. 安装Oracle Instant Client及Golang环境;
    2. 下载oracledb_exporter源码并编译(go build);
    3. 编辑config.yml配置Oracle连接信息(用户名、密码、服务名);
    4. 启动oracledb_exporter./oracledb_exporter -config.file=config.yml);
    5. 配置Prometheus抓取oracledb_exporter的端口(默认9161);
    6. 在Grafana导入Oracle监控模板(如社区提供的Oracle Database Monitoring模板),即可查看CPU、内存、SQL执行等可视化图表。

3. Zabbix

企业级开源监控工具,支持Oracle数据库监控模块,可实现表空间、缓存命中率、死锁等指标的监控与告警。

  • 配置步骤
    1. 安装Zabbix Server及Agent;
    2. 导入Zabbix Oracle模板(如orabbix_export_full.xml);
    3. 在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);
    4. 创建监控主机并关联模板,即可查看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
Ubuntu Oracle配置故障排除 Ubuntu Oracle配置资源推荐

游客 回复需填写必要信息