Ubuntu上Oracle性能瓶颈的定位与优先级
一、快速判断路径
二、常见瓶颈与现象对照表
| 瓶颈类别 | 典型等待/症状 | 高发场景 | 快速验证 | 优先动作 |
|---|---|---|---|---|
| CPU/解析 | DB CPU高、Hard Parses/s高、library cache mutex、cursor: pin S on X | 高并发短连接、未用绑定变量、频繁DDL | AWR Top 5 Timed Foreground Events、SQL ordered by Parses/Executions | 使用绑定变量、开启连接池、错峰DDL、必要时设置CURSOR_SHARING |
| 内存/SGA | Latch/mutex争用、SGA频繁resize、OS swap/paging | SGA过大、AMM/ASMM自动调整、内存紧张 | vmstat/sar看si/so、AWR“SGA breakdown”、内存resize统计 | 锁定SGA、启用HugePages、为SGA/PGA设合理下限、减少resize频率 |
| 存储I/O | db file sequential/scattered read、log file sync、检查点未完成 | 大表扫描、索引缺失、日志写入慢、存储性能不足 | AWR I/O与Top SQL、OS iostat -x、LGWR/DBWR等待 | 使用SSD/NVMe、合理条带/RAID、优化SQL与索引/分区、调优检查点 |
| 并发/锁 | enqueue、buffer busy waits、行级锁冲突 | 热点行更新、锁升级、缺乏合适索引导致长事务 | AWR/ASH Top Events、V$LOCK/V$SESSION_WAIT | 优化事务粒度、加索引减少扫描与锁持有、避免热点单行更新 |
| 日志/归档 | log file sync、log file parallel write、归档瓶颈 | 高频小事务、日志设备慢、归档目标瓶颈 | AWR Redo/Log相关统计、LGWR/ARCH等待 | 增大LOG_BUFFER、更快的日志盘/条带、批量提交、优化归档路径 |
| 网络 | 应用超时、SQL*Net message from client/s to client高 | 带宽不足、往返次数多、无批量/数组处理 | 网络监控、AWR/ASH中的网络等待 | 启用JDBC批处理/数组处理、压缩/合并请求、升级带宽/优化拓扑 |
| 配置/统计 | 执行计划突变、统计信息过期 | 统计信息缺失、参数不当 | AWR/SQL Plan Monitor、V$SQL_PLAN | 定期收集统计信息、SQL Plan基线/固化、参数复核(SGA/PGA/连接等) |
| 上述现象与动作与Oracle官方与业界最佳实践一致,适用于Ubuntu部署。 |
三、Ubuntu与Linux特有的注意点
四、5步排查清单(可直接照做)