1. 前提准备
在Ubuntu上监控Oracle数据库前,需确保已安装Oracle Instant Client(用于命令行工具连接)和Golang编译环境(用于编译Oracle Exporter)。安装步骤如下:
sudo apt updatesudo apt install libaio1wget 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库文件
sudo apt install golang2. 命令行工具监控(基础方法)
通过Oracle自带的SQL*Plus和性能视图,可快速获取数据库状态信息:
sqlplus / as sysdba登录,执行SELECT status FROM v$instance;,返回OPEN表示实例正常运行。SELECT COUNT(*) FROM v$session;(统计所有会话数)。SELECT 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. 开源监控工具(推荐方案)
此组合可实现自动化采集+可视化+告警,适合生产环境:
git clone https://github.com/iamseth/oracledb_exporter.gitcd oracledb_exporter && go build && ./oracledb_exporter(默认监听9161端口)config.yml,添加Oracle数据库的username、password、service_name等信息。prometheus.yml中添加抓取任务,指向Oracle Exporter的地址:scrape_configs:
- job_name: 'oracle'
static_configs:
- targets: ['ubuntu-server-ip:9161']
12345的开源模板),展示CPU使用率、SGA命中率、活跃会话数等指标。Zabbix是成熟的企业级开源监控平台,支持Oracle专用模板:
cx_Oracle库),采集表空间使用率、PGA/SGA命中率、用户连接数等指标;Oracle Database Monitoring)快速部署,支持告警规则(如表空间使用率超过80%时发送邮件)。轻量级实时监控工具,适合快速查看Oracle数据库状态:
bash <(curl -Ss https://my-netdata.io/kickstart.sh)(一键安装);/etc/netdata/go.d/oracle.conf),添加数据库连接信息,即可实时监控Oracle的性能指标(如SQL执行时间、锁等待数)。4. Oracle自带高级工具
DBMS_WORKLOAD_REPOSITORY包生成报告,分析历史性能趋势(如SQL执行时间变化、资源消耗峰值);V$ACTIVE_SESSION_HISTORY视图查询。5. 日志文件监控
$ORACLE_BASE/diag/rdbms/<db_name>/<instance_name>/trace/alert_<instance_name>.log;$ORACLE_HOME/network/log/listener.log;tail -f命令实时查看日志,或通过脚本分析日志中的错误信息(如grep -i "error" alert.log)。