温馨提示×

linux oracle如何监控

小樊
42
2026-07-28 11:31:40
栏目: 云计算

在 Linux 环境下监控 Oracle 数据库,通常从 系统资源、数据库实例、SQL/会话、存储、日志 等多个层面进行。下面给你一套常用且实战型的监控方案,从基础到进阶。


一、系统级监控(Linux)

1. CPU / 内存 / 负载

top
htop        # 更直观
uptime
vmstat 1

关注:

  • load average 是否过高
  • Oracle 进程是否占用异常 CPU
  • 内存是否接近耗尽(swap 是否频繁)

2. 内存与 Swap

free -h
cat /proc/meminfo

Oracle 非常依赖 SGA / PGA,内存不足会严重影响性能。


3. IO 监控

iostat -x 1

重点:

  • %util 是否接近 100%
  • await 是否过高
  • 数据文件所在磁盘 IO 压力

4. 网络(RAC/远程访问)

sar -n DEV 1
netstat -an | grep 1521

二、Oracle 实例级监控

1. 查看 Oracle 进程

ps -ef | grep pmon
ps -ef | grep ora_

常见进程:

  • pmon:进程监控
  • smon:系统监控
  • dbw0:数据写进程
  • lgwr:日志写进程

2. 查看数据库状态

sqlplus / as sysdba

select name, open_mode, log_mode from v$database;
select instance_name, status from v$instance;

三、SQL / 会话监控(重点)

1. 查看当前会话

select sid, serial#, username, status, machine
from v$session
where username is not null;

2. 查找正在执行的 SQL

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';

3. 查找锁(Lock)

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;

4. 等待事件(性能关键)

select event, count(*)
from v$session_wait
group by event
order by 2 desc;

常见等待:

  • db file sequential read
  • log file sync
  • enq: TX - row lock contention

四、表空间与存储监控(非常重要)

1. 表空间使用率

select
  tablespace_name,
  round(used_percent,2) used_pct
from dba_tablespace_usage_metrics;

⚠️ 90% 以上要立刻处理


2. 数据文件状态

select file_name, bytes/1024/1024 MB
from dba_data_files;

五、日志与归档监控

1. Alert Log

tail -f $ORACLE_BASE/diag/rdbms/*/*/trace/alert*.log

常见警告:

  • ORA-xxxx
  • 无法归档
  • 表空间满

2. 归档日志

archive log list;
df -h

归档目录满了,数据库会 直接挂起


六、性能历史监控(AWR / ADDM)

1. AWR 报告(最常用)

@?/rdbms/admin/awrrpt.sql

分析:

  • DB Time
  • Top SQL
  • IO / CPU
  • Wait Events

2. ADDM

@?/rdbms/admin/addmrpt.sql

Oracle 自动诊断建议(非常实用)


七、自动化监控方案(生产环境推荐)

级别 工具
基础 shell + cron
企业 Oracle Enterprise Manager (OEM)
开源 Zabbix + Oracle 模板
云/容器 Prometheus + exporter

八、典型监控检查清单 ✅

✅ CPU / 内存
✅ 磁盘 IO
✅ Oracle 实例是否 UP
✅ 表空间使用率 < 85%
✅ 无死锁
✅ Alert log 无 ORA 错误
✅ 归档空间充足
✅ 等待事件正常


你可以继续告诉我:

  • 你是 单机 / RAC
  • Oracle 版本(11g / 12c / 19c)?
  • 是否需要 shell 自动巡检脚本
  • 是否用于 生产环境告警

我可以直接给你一套 可用脚本或 Zabbix 模板

0