温馨提示×

ubuntu oracle如何监控

小樊
41
2026-10-19 11:14:41
栏目: 云计算

在 Ubuntu + Oracle 数据库 环境下,监控通常分为 操作系统层监控 和 Oracle 数据库层监控 两大类。下面给你一套实用方案,从“轻量命令”到“专业工具”都有。


一、操作系统层监控(Ubuntu)

1. 基础命令

top
htop        # 更友好(需安装)
free -h     # 内存
df -h       # 磁盘
iostat -x 1 # IO(需安装 sysstat)
vmstat 1

2. 网络与进程

netstat -tnlp | grep 1521
ss -tnlp | grep 1521
ps -ef | grep oracle

3. 系统日志

tail -f /var/log/syslog
dmesg | tail

二、Oracle 数据库层监控(核心)

1. 使用 SQL*Plus 基本监控

sqlplus / as sysdba

查看实例状态

SELECT instance_name, status FROM v$instance;

查看数据库状态

SELECT name, open_mode FROM v$database;

查看会话

SELECT sid, serial#, username, status FROM v$session;

查看等待事件(非常重要)

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

查看表空间使用

SELECT tablespace_name,
       round(sum(bytes)/1024/1024,2) mb
FROM dba_data_files
GROUP BY tablespace_name;

三、Oracle 自带工具

1. AWR(自动工作负载仓库)

@?/rdbms/admin/awrrpt.sql

生成 HTML 报告,分析性能瓶颈。

2. ADDM

@?/rdbms/admin/addmrpt.sql

3. Oracle Enterprise Manager(OEM)

  • 浏览器访问:
https://<hostname>:5500/em

(12c 以后叫 Enterprise Manager Express)


四、常用监控脚本(推荐)

1. 表空间使用率

SELECT a.tablespace_name,
       a.bytes/1024/1024 total_mb,
       b.bytes/1024/1024 free_mb
FROM dba_data_files a,
     dba_free_space b
WHERE a.tablespace_name = b.tablespace_name;

2. 锁等待

SELECT * FROM v$lock WHERE block = 1;

五、图形化 / 自动化监控方案

1. Prometheus + Oracle Exporter(推荐)

  • 组件:
    • oracle_exporter
    • Prometheus
    • Grafana
  • 优点:实时、可视、可告警

2. Zabbix

  • 使用 Zabbix Oracle 模板
  • 监控:
    • 实例状态
    • 表空间
    • 会话数
    • 锁

3. Nagios

  • 适合简单告警

六、日志文件位置(排错必看)

$ORACLE_BASE/diag/rdbms/<db>/<instance>/trace/alert_<instance>.log

七、简单监控建议组合(实用)

日常:

  • top + df -h
  • v$session
  • alert.log

生产:

  • AWR 报告
  • Prometheus + Grafana
  • 表空间 & 锁告警

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

  • Oracle 版本(11g / 12c / 19c)
  • 单机还是 RAC
  • 是否允许装第三方工具

我可以给你 具体配置步骤或监控脚本。

0 踩