Ubuntu下Oracle数据库性能监控方法
SQL*Plus是Oracle自带的命令行工具,可直接执行SQL语句监控数据库状态。常用查询包括:
SELECT COUNT(*) FROM v$session;SELECT sql_text FROM v$sql WHERE executions > 1000 ORDER BY executions DESC FETCH FIRST 5 ROWS ONLY;SELECT event, COUNT(*) FROM v$session_wait GROUP BY event ORDER BY COUNT(*) DESC;
可将这些语句封装为Shell脚本,通过cron定时执行,将结果输出到日志文件,便于后续分析。Oracle数据库的性能与系统资源(CPU、内存、磁盘I/O)密切相关,可使用Ubuntu自带的工具监控:
Shift+P按CPU排序,快速定位高资源消耗的Oracle进程。vmstat 1 5每1秒刷新一次,共显示5次,重点关注si(swap in)、so(swap out)、wa(I/O等待)列。iostat -x 1显示每个设备的读写延迟、吞吐量,关注await(平均等待时间)列。sar -u 1 3查看CPU使用率,sar -d 1 3查看磁盘活动。sudo apt install libaio1,下载并解压InstantClient包,设置LD_LIBRARY_PATH);再安装Golang环境;克隆oracledb_exporter源码并编译(git clone https://github.com/iamseth/oracledb_exporter.git && cd oracledb_exporter && go build);编辑config.yml配置Oracle连接信息(用户名、密码、服务名);运行./oracledb_exporter启动采集器。prometheus.yml添加Oracle Exporter的抓取任务(scrape_configs部分指定Exporter的地址和端口)。Zabbix支持Oracle数据库监控,提供专用模板,可实现:
.tnsnames.ora文件,确保能连接Oracle数据库;通过自定义Item(SQL查询)采集性能数据。oratop是一个类似top的工具,专门用于监控Oracle的活动会话,实时显示:
ON CPU、WAIT)。db file sequential read、enqueue)。oratop命令即可进入交互界面,按q退出。SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.awr_report_html(l_dbid, l_inst_num, l_bid, l_eid, 0)) FROM dual;生成HTML报告,分析长期性能趋势。SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.ash_report_html(l_dbid, l_inst_num, l_bid, l_eid, 0)) FROM dual;生成报告,查看活跃会话的SQL、等待事件。ALTER SESSION SET sql_trace = TRUE;开启当前会话的跟踪,或使用DBMS_SESSION.session_trace_enable()开启会话级跟踪。tkprof trace_file.trc output_file.txt,报告中重点关注Elapsed Time(执行时间)、Disk Reads(物理读)、Buffer Gets(逻辑读)。OEM是Oracle的标准监控工具,提供Web界面,支持: