centos oracle数据库如何监控
导读:CentOS 上 Oracle 数据库监控实践 一 监控体系与工具选型 数据库内置与官方工具 Oracle Enterprise Manager(OEM):集中式监控、告警、性能诊断与优化。 AWR/ASH/Statspack:历史与实...
CentOS 上 Oracle 数据库监控实践
一 监控体系与工具选型
- 数据库内置与官方工具
- Oracle Enterprise Manager(OEM):集中式监控、告警、性能诊断与优化。
- AWR/ASH/Statspack:历史与实时性能数据、等待事件、SQL 负载分析。
- oratop:类 top 的实时性能工具,覆盖会话、SQL、等待事件,支持 ADG。
- 操作系统层监控
- 资源与 I/O:top/htop、vmstat、iostat、sar、dstat、nmon。
- 网络与监听:netstat -tlnp | grep < 端口> 、lsnrctl status/start。
- 开源与商业平台
- Zabbix(可用 Orabbix 插件采集 Oracle 指标)、Prometheus + oracle_exporter + Grafana、Datadog、Nagios/SolarWinds。
- 脚本与自研
- Shell/Python + cx_Oracle 定制巡检与指标采集,灵活对接企业告警通道。
二 快速上手的三种方案
- 方案 A:Zabbix + Orabbix(适合已有 Zabbix 体系)
- 前置:Orabbix 主机安装 Java,与 Zabbix Server 网络互通;Oracle 主机安装 Zabbix Agent(Orabbix 可不在库主机)。
- 安装与配置
- 部署 Orabbix,编辑 conf/config.props:配置 Zabbix Server 地址、被监控库列表(DatabaseList)、JDBC 连接串(如 jdbc:oracle:thin:@IP:1521:SID)、连接池与采集频率。
- 在 Oracle 创建监控用户并授权(示例):
- CREATE USER ZABBIX IDENTIFIED BY ZABBIX …;
- GRANT CONNECT, CREATE SESSION TO ZABBIX;
- GRANT SELECT ON V_$INSTANCE、V_$LOG_HISTORY、V_$PARAMETER、V_$SYSTEM_EVENT、V_$LIBRARYCACHE、V_$SYSSTAT、V_$PGASTAT、V_$SGASTAT、V_$PROCESS、DBA_DATA_FILES、DBA_FREE_SPACE、DBA_USERS、V_$LOCK、SYS.DBA_AUDIT_SESSION TO ZABBIX;
- 如为 Oracle 11g,需配置 ACL 以允许解析外部主机名(DBMS_NETWORK_ACL_ADMIN)。
- 导入模板、关联主机、设置告警阈值。
- 方案 B:Prometheus + oracle_exporter + Grafana(云原生与可视化)
- 部署 oracle_exporter(提供 /metrics),以 Oracle 用户连接库并暴露指标。
- Prometheus 配置抓取任务,Grafana 使用官方或社区 Oracle 仪表盘展示与告警。
- 方案 C:轻量脚本 + 系统工具(适合最小化环境)
- 监听器:用 lsnrctl status 检查并在异常时 lsnrctl start;可脚本化并配合 cron 每分钟巡检。
- OS 资源:iostat -xz 1 1(I/O)、top/htop(CPU/内存)、vmstat(虚拟内存/CPU)、sar/dstat/nmon(综合资源)。
- 数据库会话与负载:按需查询 V$ 视图(如 V$SESSION、V$SYSSTAT、V$SYSTEM_EVENT)做阈值告警或趋势记录。
三 关键监控指标与采集方法
| 维度 | 关键指标 | 采集方式/SQL 示例 |
|---|---|---|
| 可用性 | 监听状态、实例状态 | lsnrctl status;SELECT status FROM v$instance; |
| 负载 | DB Time、CPU 使用、逻辑/物理读 | SELECT name, value FROM v$sysstat WHERE name IN (‘DB time’,‘CPU used by this session’,‘physical reads’,‘session logical reads’); |
| 等待事件 | Top 等待事件与平均等待 | SELECT event, total_waits, time_waited_micro FROM v$system_event WHERE wait_class!=‘Idle’ ORDER BY time_waited_micro DESC FETCH FIRST 10 ROWS ONLY; |
| 会话与连接 | 当前会话/进程数、阻塞会话 | SELECT count() FROM v$session; SELECT count() FROM v$process; 结合 v$session 的 blocking_session 定位阻塞源; |
| SQL 性能 | Top SQL(耗时/磁盘读/执行次数) | SELECT sql_id, elapsed_time, cpu_time, disk_reads, executions FROM v$sqlarea ORDER BY elapsed_time DESC FETCH FIRST 10 ROWS ONLY; |
| 存储与空间 | 表空间使用率 | SELECT tablespace_name, round((used_space/total_space)*100,2) pct FROM dba_tablespace_usage_metrics; |
| 内存与缓存 | SGA/PGA 命中率、库缓存命中 | SELECT name, value FROM v$sysstat WHERE name IN (‘consistent gets’,‘db block gets’,‘physical reads’); |
| 归档与日志 | 归档日志产生趋势、日志切换频率 | SELECT sequence#, first_time, next_time FROM v$archived_log ORDER BY sequence# DESC; SELECT name, value FROM v$sysstat WHERE name=‘redo writes’; |
| 并发量 | 并发会话峰值与活跃会话 | SELECT count(*) FROM v$session WHERE status=‘ACTIVE’; 结合 AWR/ASH 分析并发趋势与峰值时段; |
四 告警阈值与巡检建议
- 告警阈值示例(需结合基线调整)
- 表空间使用率 > 80%(严重 > 90%)
- 活动会话数超过 CPU 核数的 2–3 倍或历史 P95
- 近 15 分钟平均等待事件总耗时突增(对比 AWR/ASH 基线)
- 每秒硬解析次数持续上升(可能绑定变量缺失)
- 监听器 DOWN 或 TNS-12541/TNS-12560 等连接失败
- 近 5 分钟归档失败或日志切换频率异常增高
- 日常巡检清单
- 每日:AWR/ASH 报告、Top SQL、表空间与备份状态、错误告警复核
- 每周:SGA/PGA 命中率与内存分配、I/O 与等待事件趋势、参数变更审计
- 每月:容量规划(数据/日志增长)、SQL 基线回归、备份恢复演练与 RPO/RTO 校验
五 排错与优化要点
- 连接异常:优先检查 lsnrctl status、监听日志与 tnsnames.ora,确认监听端口(默认 1521)与 SERVICE_NAME/SID 一致。
- 会话/负载异常:用 V$SESSION、V$SQLAREA、V$SYSTEM_EVENT 定位高耗 SQL 与等待类(如 db file sequential read、log file sync),结合执行计划与统计信息优化。
- 存储瓶颈:关注 DBA_TABLESPACE_USAGE_METRICS 与 V$DATAFILE,必要时扩容或迁移热点数据文件,开启合适的 ASM/条带化。
- 内存与并行:结合 V$SGASTAT、V$PGASTAT 与 AWR 的 PGA 命中率/排序指标,调整 SGA_TARGET、PGA_AGGREGATE_TARGET 与 SQL 并行度。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos oracle数据库如何监控
本文地址: https://pptw.com/jishu/776744.html
