在 Linux + Oracle 数据库 环境下,监控资源通常分为 操作系统资源监控 和 Oracle 数据库内部监控 两部分。下面按实用场景给你一个系统性的总结。
top
htop # 更友好(需安装)
mpstat 1 # 每1秒查看CPU使用率
关注:
%us:用户态(Oracle 进程)%sy:系统态%wa:IO等待(高说明磁盘瓶颈)free -h
vmstat 1
cat /proc/meminfo
重点关注:
MemFreeBuffers / CacheSwap 是否被使用(Swap 高 = 内存不足)iostat -x 1
df -h
关注:
%util:磁盘繁忙程度await:IO响应时间sar -n DEV 1
ifstat
netstat -an | grep 1521
常用于:
ps -ef | grep ora_
ps -ef | grep oracle
常见进程:
ora_dbw0_<SID>ora_lgwr_<SID>ora_ckpt_<SID>SELECT username, count(*)
FROM v$session
GROUP BY username;
SELECT sid, serial#, username, status, event
FROM v$session
WHERE status='ACTIVE';
SELECT sql_id, executions, cpu_time, elapsed_time, disk_reads
FROM v$sql
ORDER BY cpu_time DESC;
SELECT event, total_waits, time_waited
FROM v$system_event
ORDER BY time_waited DESC;
常见瓶颈:
db file sequential read → 索引/IOlog file sync → 提交慢enq: TX → 锁等待SELECT tablespace_name, used_percent
FROM dba_tablespace_usage_metrics;
SELECT file_name, bytes/1024/1024 MB
FROM dba_data_files;
SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;
SELECT * FROM v$sgainfo;
@?/rdbms/admin/awrrpt.sql
分析:
@?/rdbms/admin/addmrpt.sql
crontab + shell脚本Prometheus + node_exporter + oracle_exporterZabbixGrafana 可视化| 场景 | 命令 |
|---|---|
| CPU高 | top + v$sql |
| IO高 | iostat + AWR |
| 连接暴增 | netstat + v$session |
| 锁等待 | v$lock + v$session |
| 内存不足 | free + PGA参数 |
如果你愿意,可以告诉我:
我可以直接给你 可落地的监控脚本或方案。