温馨提示×

Ubuntu如何监控Oracle数据库

小樊
50
2025-10-08 06:36:54
栏目: 云计算

1. 前提准备
在Ubuntu上监控Oracle数据库前,需确保已安装Oracle Instant Client(用于命令行工具连接)和Golang编译环境(用于编译Oracle Exporter)。安装步骤如下:

  • 更新软件包索引:sudo apt update
  • 安装libaio1(Oracle客户端依赖):sudo apt install libaio1
  • 下载并解压Oracle Instant Client Basic Lite包(以21.9版本为例):
    wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
    unzip instantclient-basiclite-linux.x64-21.9.0.0.0dbru.zip
    export LD_LIBRARY_PATH=$PWD/instantclient_21_9  # 设置环境变量,使系统能找到Oracle库文件
    
  • 安装Golang(若未安装):sudo apt install golang

2. 命令行工具监控(基础方法)
通过Oracle自带的SQL*Plus和性能视图,可快速获取数据库状态信息:

  • 检查实例状态:使用sqlplus / as sysdba登录,执行SELECT status FROM v$instance;,返回OPEN表示实例正常运行。
  • 查看当前连接数SELECT COUNT(*) FROM v$session;(统计所有会话数)。
  • 监控活跃SQLSELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY;(找出执行次数最多的前5条SQL,用于优化高频慢查询)。
  • 查询等待事件SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;(统计会话等待事件,识别性能瓶颈,如I/O等待、锁等待)。
  • 常用操作系统工具
    • top/htop:查看Oracle进程的CPU、内存占用;
    • vmstat 1 5:每1秒采样1次,共5次,监控系统内存、进程、I/O等状态;
    • iostat -x 1:查看磁盘I/O负载(需安装sysstat包);
    • sar -u 1 3:查看CPU使用率趋势。

3. 开源监控工具(推荐方案)

3.1 Prometheus + Grafana + Oracle Exporter

此组合可实现自动化采集+可视化+告警,适合生产环境:

  • Oracle Exporter部署
    • 克隆源码:git clone https://github.com/iamseth/oracledb_exporter.git
    • 编译并运行:cd oracledb_exporter && go build && ./oracledb_exporter(默认监听9161端口)
    • 配置连接:编辑config.yml,添加Oracle数据库的usernamepasswordservice_name等信息。
  • Prometheus配置:在prometheus.yml中添加抓取任务,指向Oracle Exporter的地址:
    scrape_configs:
      - job_name: 'oracle'
        static_configs:
          - targets: ['ubuntu-server-ip:9161']
    
  • Grafana可视化:导入Oracle监控仪表板(如ID为12345的开源模板),展示CPU使用率、SGA命中率、活跃会话数等指标。

3.2 Zabbix

Zabbix是成熟的企业级开源监控平台,支持Oracle专用模板:

  • 安装Zabbix Server和Agent(参考官方文档);
  • 配置Oracle监控项:通过Zabbix的“自动发现”功能或编写Python脚本(使用cx_Oracle库),采集表空间使用率、PGA/SGA命中率、用户连接数等指标;
  • 使用Zabbix模板(如Oracle Database Monitoring)快速部署,支持告警规则(如表空间使用率超过80%时发送邮件)。

3.3 Netdata

轻量级实时监控工具,适合快速查看Oracle数据库状态:

  • 安装Netdata:bash <(curl -Ss https://my-netdata.io/kickstart.sh)(一键安装);
  • 配置Oracle监控:编辑Netdata配置文件(/etc/netdata/go.d/oracle.conf),添加数据库连接信息,即可实时监控Oracle的性能指标(如SQL执行时间、锁等待数)。

4. Oracle自带高级工具

4.1 AWR(自动负载信息库)与ASH(活动会话历史)

  • AWR:定期采集数据库性能快照(默认每小时1次,保留7天),通过DBMS_WORKLOAD_REPOSITORY包生成报告,分析历史性能趋势(如SQL执行时间变化、资源消耗峰值);
  • ASH:每秒采样活动会话状态,存储在内存中,用于诊断瞬时性能问题(如当前锁等待、高负载SQL),可通过V$ACTIVE_SESSION_HISTORY视图查询。

4.2 ADDM(自动数据库诊断监视器)

  • 功能:基于AWR数据,自动识别性能瓶颈(如CPU瓶颈、I/O争用、SQL执行慢),并提供优化建议;
  • 使用方式:通过Oracle Enterprise Manager(OEM)查看ADDM报告,或使用SQL命令生成报告(需SYSDBA权限)。

5. 日志文件监控

  • alert.log:记录数据库关键事件(如实例启动/关闭、表空间满、死锁),路径为$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log
  • listener.log:记录监听器状态(如连接请求、错误),路径为$ORACLE_HOME/network/log/listener.log
  • 监控方法:使用tail -f命令实时查看日志,或通过脚本分析日志中的错误信息(如grep -i "error" alert.log)。

0