Ubuntu系统监控Oracle数据库资源使用的方法
top是Ubuntu系统自带的实时性能监控工具,可动态显示系统中各个进程的资源占用情况(包括CPU、内存、运行时间等)。通过top命令,可以快速识别占用资源过高的Oracle进程(如oracle用户下的ora_pmon、ora_cmon等后台进程或用户会话进程)。
P键可按CPU使用率排序,M键按内存使用率排序;输入q退出。htop是top的增强版,提供更直观的条形图显示内存/交换空间使用情况,支持鼠标操作和进程搜索(如搜索oracle进程),更适合快速定位问题。vmstat用于监控系统的虚拟内存、进程、CPU活动等综合性能指标,帮助分析系统瓶颈。
vmstat 1(每秒刷新一次),输出包括:
r(运行队列中的进程数)、b(等待IO的进程数);free(空闲内存)、buff(缓冲区内存)、cache(缓存内存);si(从磁盘交换到内存的数据量)、so(从内存交换到磁盘的数据量,非零值表示内存不足);us(用户进程占用CPU百分比)、sy(系统内核占用CPU百分比)、wa(等待IO的CPU时间百分比,高值表示IO瓶颈)。iostat用于监控系统的CPU使用率和磁盘IO性能,帮助识别磁盘IO瓶颈(如Oracle数据库的读写延迟问题)。
iostat -x 1(每秒刷新一次,显示详细磁盘IO统计),关键指标包括:
%util:磁盘利用率(接近100%表示磁盘繁忙);await:平均IO等待时间(高值表示IO延迟高);r/s/w/s:每秒读/写请求数。sar是系统活动报告工具,可收集、报告和保存系统的历史性能数据(需安装sysstat包:sudo apt install sysstat)。
sar -u 1 5(查看CPU使用率,每秒1次,共5次);sar -r 1 5(查看内存使用情况);sar -d 1 5(查看磁盘IO情况)。-f /var/log/sa/saXX,XX为日期),便于回溯分析性能问题。通过Oracle自带的性能视图(如v$session、v$sql、gv$session),编写SQL脚本监控Oracle的活动会话、SQL执行情况及资源消耗。
col inst_sid heading "INST_ID|:SID" format a7
col username format a10
col machine format a12
col sql_exec_start heading "SQL|START|D HH:MM:SS" format a11
col sql_id format a13
col sql_text format a40
col event format a33
col wait_sec heading "WAIT|(SEC)" format 99999
set linesize 200
SELECT
ses.inst_id || ':' || ses.sid AS inst_sid,
ses.username,
ses.machine,
TO_CHAR(ses.sql_exec_start, 'DD-HH24:MI:SS') AS sql_exec_start,
ses.sql_id,
SUBSTR(sql.sql_text, 1, 40) AS sql_text,
SUBSTR(
CASE
WHEN ses.time_since_last_wait_micro = 0 THEN
CASE ses.wait_class
WHEN 'Idle' THEN 'IDLE: ' || ses.event
ELSE ses.event
END
ELSE 'ON CPU'
END, 1, 33
) AS event,
(CASE
WHEN ses.time_since_last_wait_micro = 0 THEN ses.wait_time_micro
ELSE ses.time_since_last_wait_micro
END) / 1000000 AS wait_sec
FROM
gv$session ses
LEFT JOIN
gv$sql sql ON ses.sql_id = sql.sql_id
WHERE
ses.status = 'ACTIVE'
AND ses.username IS NOT NULL
AND ses.inst_id || ':' || ses.sid != SYS_CONTEXT('USERENV', 'INSTANCE') || ':' || SYS_CONTEXT('USERENV', 'SID')
ORDER BY
ses.sql_exec_start, ses.username, ses.sid;
该脚本可显示每个活跃会话的SQL执行时间、等待事件及等待时长,帮助定位慢SQL。OEM是Oracle官方提供的综合监控工具,支持监控Oracle数据库的性能指标(如SGA/PGA命中率、SQL执行计划、锁等待)、空间使用情况(表空间利用率)、系统运行状态(实例状态、后台进程)等。
AWR(自动工作负载存储库)和ASH(活动会话历史)是Oracle内置的性能诊断工具,用于收集和分析数据库性能数据。
DBMS_WORKLOAD_REPOSITORY包生成,包含数据库的负载特性、性能指标(如CPU使用率、IO等待时间)、SQL执行统计等,帮助识别性能瓶颈。-- 生成AWR报告(对比两个时间点的性能)
@?/rdbms/admin/awrrpt.sql
-- 生成ASH报告(当前活动会话)
@?/rdbms/admin/ashrpt.sql
适用场景:深入分析Oracle数据库的性能问题(如SQL性能瓶颈、资源争用)。Zabbix是一款开源的企业级监控解决方案,支持监控Oracle数据库的性能指标(如表空间大小、缓存命中率、死锁数量、用户连接数)及Ubuntu系统的资源使用情况(CPU、内存、磁盘IO)。
zabbix-agent);orabbix_export_full.xml);