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界面,支持: