CentOS 上 Oracle 数据库监控实践
一 监控体系与工具选型
二 快速上手的三种方案
三 关键监控指标与采集方法
| 维度 | 关键指标 | 采集方式/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 分析并发趋势与峰值时段; |
四 告警阈值与巡检建议
五 排错与优化要点