温馨提示×

linux oracle怎样监控状态

小樊
39
2026-09-19 14:44:51
栏目: 云计算

在 Linux 上监控 Oracle 数据库状态,可以从 操作系统层面Oracle 实例层面性能/告警层面 来做。下面按常用方式系统说明。


一、查看 Oracle 实例基本状态(最常用)

1. 使用 sqlplus 查看实例状态

su - oracle
sqlplus / as sysdba
SELECT instance_name, status, database_status
FROM v$instance;

常见状态:

  • OPEN:数据库正常
  • MOUNTED:已挂载未打开
  • STARTED:已启动未挂载
  • SHUTDOWN:未启动

查看数据库打开模式:

SELECT name, open_mode FROM v$database;

2. 查看数据库是否正常运行(进程)

ps -ef | grep pmon

ora_pmon_<SID> 表示实例已启动。


二、Linux 系统层面监控

1. 监听状态(非常重要)

lsnrctl status

查看监听端口:

netstat -tunlp | grep 1521

2. CPU / 内存 / IO

top
free -h
iostat -x 1
vmstat 1

Oracle 相关进程:

  • ora_pmon_*(进程监控)
  • ora_dbw0_*(数据写入)
  • ora_lgwr_*(日志写入)

三、Oracle 内部性能监控

1. 会话连接情况

SELECT username, status, count(*)
FROM v$session
GROUP BY username, status;

2. 等待事件(性能问题)

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

3. 表空间使用率

SELECT tablespace_name,
       round(used_space*8/1024,2) used_mb,
       round(tablespace_size*8/1024,2) total_mb
FROM dba_tablespace_usage_metrics;

四、日志监控(排错关键)

1. Alert 日志

cd $ORACLE_BASE/diag/rdbms/$ORACLE_SID/$ORACLE_SID/trace
tail -f alert_$ORACLE_SID.log

2. 监听日志

lsnrctl status
# 或
tail -f $ORACLE_HOME/network/log/listener.log

五、自动监控方案(生产推荐)

1. Oracle 自带

  • Enterprise Manager (OEM)
  • AWR / ADDM 报告
@?/rdbms/admin/awrrpt.sql

2. 第三方 / 开源

  • Zabbix + Oracle 模板
  • Prometheus + Oracle Exporter
  • Nagios / Grafana

六、简单健康检查脚本示例

#!/bin/bash
source ~/.bash_profile
sqlplus -s / as sysdba <<EOF
SELECT instance_name, status FROM v$instance;
EOF
lsnrctl status | grep "STATUS"

如果你能告诉我:

  • Oracle 版本(11g / 12c / 19c)
  • 是否 RAC
  • 想监控“可用性”还是“性能”

我可以给你更精确的监控方案或脚本。

0