在 Linux 环境下监控 Oracle 数据库,通常从 系统资源、数据库实例、SQL/会话、存储、日志 等多个层面进行。下面给你一套常用且实战型的监控方案,从基础到进阶。
top
htop # 更直观
uptime
vmstat 1
关注:
load average 是否过高free -h
cat /proc/meminfo
Oracle 非常依赖 SGA / PGA,内存不足会严重影响性能。
iostat -x 1
重点:
%util 是否接近 100%await 是否过高sar -n DEV 1
netstat -an | grep 1521
ps -ef | grep pmon
ps -ef | grep ora_
常见进程:
pmon:进程监控smon:系统监控dbw0:数据写进程lgwr:日志写进程sqlplus / as sysdba
select name, open_mode, log_mode from v$database;
select instance_name, status from v$instance;
select sid, serial#, username, status, machine
from v$session
where username is not null;
select s.sid, s.serial#, s.username, a.sql_text
from v$session s
join v$sqlarea a on s.sql_id = a.sql_id
where s.status = 'ACTIVE';
select
s.sid, s.serial#, s.username,
l.type, l.lmode, l.request
from v$lock l
join v$session s on l.sid = s.sid;
select event, count(*)
from v$session_wait
group by event
order by 2 desc;
常见等待:
db file sequential readlog file syncenq: TX - row lock contentionselect
tablespace_name,
round(used_percent,2) used_pct
from dba_tablespace_usage_metrics;
⚠️ 90% 以上要立刻处理
select file_name, bytes/1024/1024 MB
from dba_data_files;
tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log
常见警告:
archive log list;
df -h
归档目录满了,数据库会 直接挂起
@?/rdbms/admin/awrrpt.sql
分析:
@?/rdbms/admin/addmrpt.sql
Oracle 自动诊断建议(非常实用)
| 级别 | 工具 |
|---|---|
| 基础 | shell + cron |
| 企业 | Oracle Enterprise Manager (OEM) |
| 开源 | Zabbix + Oracle 模板 |
| 云/容器 | Prometheus + exporter |
✅ CPU / 内存
✅ 磁盘 IO
✅ Oracle 实例是否 UP
✅ 表空间使用率 < 85%
✅ 无死锁
✅ Alert log 无 ORA 错误
✅ 归档空间充足
✅ 等待事件正常
我可以直接给你一套 可用脚本或 Zabbix 模板。