温馨提示×

linux oracle如何监控资源

小樊
39
2026-09-28 14:52:08
栏目: 云计算

在 Linux + Oracle 数据库 环境下,监控资源通常分为 操作系统资源监控 和 Oracle 数据库内部监控 两部分。下面按实用场景给你一个系统性的总结。


一、Linux 系统资源监控

1. CPU 监控

top
htop        # 更友好(需安装)
mpstat 1    # 每1秒查看CPU使用率

关注:

  • %us:用户态(Oracle 进程)
  • %sy:系统态
  • %wa:IO等待(高说明磁盘瓶颈)

2. 内存监控

free -h
vmstat 1
cat /proc/meminfo

重点关注:

  • MemFree
  • Buffers / Cache
  • Swap 是否被使用(Swap 高 = 内存不足)

3. 磁盘 IO 监控

iostat -x 1
df -h

关注:

  • %util:磁盘繁忙程度
  • await:IO响应时间
  • Oracle 数据文件所在磁盘

4. 网络监控

sar -n DEV 1
ifstat
netstat -an | grep 1521

常用于:

  • 客户端连接暴增
  • 异地 DG 同步

5. 进程监控(Oracle 相关)

ps -ef | grep ora_
ps -ef | grep oracle

常见进程:

  • ora_dbw0_<SID>
  • ora_lgwr_<SID>
  • ora_ckpt_<SID>

二、Oracle 数据库资源监控

1. 查看当前连接和会话

SELECT username, count(*)
FROM v$session
GROUP BY username;
SELECT sid, serial#, username, status, event
FROM v$session
WHERE status='ACTIVE';

2. 查看 SQL 资源消耗

SELECT sql_id, executions, cpu_time, elapsed_time, disk_reads
FROM v$sql
ORDER BY cpu_time DESC;

3. 等待事件监控(非常重要)

SELECT event, total_waits, time_waited
FROM v$system_event
ORDER BY time_waited DESC;

常见瓶颈:

  • db file sequential read → 索引/IO
  • log file sync → 提交慢
  • enq: TX → 锁等待

4. 表空间与数据文件

SELECT tablespace_name, used_percent
FROM dba_tablespace_usage_metrics;
SELECT file_name, bytes/1024/1024 MB
FROM dba_data_files;

5. 内存(SGA / PGA)

SHOW PARAMETER sga_target;
SHOW PARAMETER pga_aggregate_target;

SELECT * FROM v$sgainfo;

三、Oracle 自带工具

1. AWR 报告(最常用)

@?/rdbms/admin/awrrpt.sql

分析:

  • 负载
  • TOP SQL
  • 等待事件

2. ADDM

@?/rdbms/admin/addmrpt.sql

3. Oracle Enterprise Manager(OEM)

  • 图形化监控
  • 告警
  • 性能建议

四、自动化 & 告警(推荐)

  • crontab + shell脚本
  • Prometheus + node_exporter + oracle_exporter
  • Zabbix
  • Grafana 可视化

五、常见监控组合(实战)

场景 命令
CPU高 top + v$sql
IO高 iostat + AWR
连接暴增 netstat + v$session
锁等待 v$lock + v$session
内存不足 free + PGA参数

如果你愿意,可以告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 是单机还是 RAC
  • 主要想监控哪类资源(CPU / IO / 连接 / SQL)

我可以直接给你 可落地的监控脚本或方案。

0 踩