CentOS 上提升 Oracle 性能的实用路线图
一 系统层优化
- 启用 tuned-profiles-oracle:为 Oracle 工作负载自动优化 CPU、内存与 I/O 调度策略,优先于手工逐项调参。
- 配置 HugePages 并禁用 Transparent HugePages(THP):减少页表开销、降低 TLB 缺失、避免 SGA 被换出;启用后需关闭 AMM(MEMORY_TARGET=0),改用 ASMM(SGA_TARGET/PGA_AGGREGATE_TARGET)。
- 合理设置 内核共享内存与文件句柄:如 kernel.shmmax、kernel.shmall、fs.file-max,确保 Oracle 有足够共享内存与文件句柄。
- I/O 与调度:为数据库选择 XFS/EXT4,SSD/NVMe 优先;调度器建议 deadline/noop;分离数据文件、Redo 日志、归档与临时表空间到不同磁盘或控制器;Redo 使用 ≥3 组、每组 ≥2 个成员并尽量分布在不同磁盘;开启 异步 I/O(AIO)。
- 资源精简:关闭不必要的系统服务与守护进程,减少资源竞争。
二 内存与实例参数
- 内存分配原则:SGA 通常占物理内存的 1/3~1/2,并确保 OS + SGA + PGA < 物理内存;避免内存过度分配导致换页。
- 启用自动内存管理:优先使用 AMM(MEMORY_TARGET)或 ASMM(SGA_TARGET + PGA_AGGREGATE_TARGET);启用 HugePages 时禁用 AMM。
- SGA 组件要点:
- Database Buffer Cache:提高命中率可显著降低物理读;命中率长期低于 90% 应考虑增大。
- Shared Pool:关注 Library Cache 与 Row Cache 命中率,低于 90% 可增大 shared_pool_size。
- Redo Log Buffer:若 V$SYSSTAT 中 redo log space requests 不为接近 0,可适当增大 LOG_BUFFER。
- PGA 建议:启用 PGA 自动管理(WORKAREA_SIZE_POLICY=AUTO),按负载设置 PGA_AGGREGATE_TARGET;OLTP 场景 PGA 通常占可用内存的较小比例,DSS/大排序可适当提高。
三 存储与 I/O 架构
- 分层与分离:将数据文件、索引、临时表空间、Redo 日志、归档日志分别放置于不同磁盘或阵列,避免争用;高写入负载优先 SSD/NVMe 与 RAID 10。
- Redo 优化:增加 Redo 组数/成员数、适度增大日志文件(如每组 500MB~1GB)以减少日志切换频率;将 Redo 与数据/归档物理隔离。
- 条带化与布局:对数据文件使用条带化(RAID 或 LVM Striping),分散热点;表和索引分表空间存放。
- 临时表空间:确保 TEMP 表空间充足,避免磁盘排序引发瓶颈。
- 监控方法:利用 V$FILESTAT 观察文件级读写分布,用操作系统 iostat 识别高延迟与饱和磁盘。
四 SQL 与索引及并发
- SQL 优化:避免 **SELECT ***,只查必要列;使用 绑定变量 减少硬解析;用 EXPLAIN PLAN 与执行计划分析定位全表扫描、低效连接与隐式转换。
- 索引策略:为高频过滤/连接列建立合适索引;删除 未使用/重复 索引;对大表使用 分区表/分区索引 减少扫描与维护成本。
- 统计信息:定期收集对象统计信息,保证优化器选择更优执行计划(如 DBMS_STATS.GATHER_SCHEMA_STATS)。
- 并发与连接:合理设置 PROCESSES/SESSIONS,避免连接风暴;结合业务峰值与实例内存规划连接池与最大会话。
- 典型等待与处理:
- latch: cache buffers chains:多由热块或低效 SQL 引起;可通过优化 SQL、分区/打散热点、减少逻辑读缓解。
- buffer busy waits:与段头/空闲列表争用、并发 DML 相关;可通过增加 FREELISTS/FREELIST GROUPS、合理 PCTFREE/PCTUSED、分区等手段改善。
五 监控与持续优化
- 基线报告:定期生成 AWR/ADDM,定位 Top SQL、等待事件与配置短板;配合 Oracle Enterprise Manager 做可视化监控与诊断。
- 关键视图:
- 内存与 SQL:V$SGASTAT、V$PGASTAT、V$LIBRARYCACHE、V$ROWCACHE、V$SYSSTAT(如 physical reads、redo log space requests)。
- I/O:V$FILESTAT、V$TEMPFILE、操作系统 iostat/iotop。
- 变更流程:任何参数或架构调整先在测试环境验证,记录 基线指标(TPS、响应时间、I/O 延迟、命中率),小步迭代并回滚预案。