- 首页 >
- 问答 >
-
云计算 >
- Ubuntu Oracle性能调优实战
Ubuntu Oracle性能调优实战
小樊
36
2025-12-10 20:21:10
Ubuntu Oracle性能调优实战
一 环境准备与基线
- 硬件与存储:优先使用SSD/NVMe、合理规划RAID(条带化提升吞吐),确保充足内存与多核CPU以支撑并发与并行执行。
- 系统与内核:保持系统与驱动为稳定版本,安装并使用tuned-profiles-oracle对CPU、内存、I/O调度进行数据库友好型预设。
- 资源与权限:为Oracle用户配置合理的ulimit(打开文件数、进程数等),并准备监控工具(如top/htop、Oracle Enterprise Manager、AWR/ASH/ADDM)。
- 基线采集:在调优前采集AWR/ASH/ADDM基线报告,记录关键指标(如DB Time、平均Active Sessions、Top SQL、I/O等待),便于量化收益。
二 操作系统层优化
- 使用 tuned 配置集:启用tuned-profiles-oracle并验证生效,获得面向Oracle的CPU调度、内存分配与I/O策略优化。
- 共享内存与文件句柄:按内存规模设置kernel.shmall/kernel.shmmax,提升fs.file-max与fs.aio-max-nr以支持高并发与异步I/O。
- 网络参数:适度增大net.core.rmem_default/wmem_default/rmem_max/wmem_max与ip_local_port_range,降低高并发下的网络时延与端口耗尽风险。
- 虚拟内存与透明大页:结合负载评估vm.swappiness;对Oracle与NUMA环境,评估透明大页(THP)策略与NUMA balancing开关,必要时为关键实例绑定NUMA节点。
- 存储与文件系统:优先XFS/ext4并采用noatime,nodiratime挂载选项;确保异步I/O可用并启用;数据、日志、归档分盘/分阵列,减少I/O争用。
三 数据库内存与并行
- 自动内存管理(AMM):在资源充足且版本支持的前提下,优先启用MEMORY_TARGET/MEMORY_MAX_TARGET,由Oracle自动在SGA与PGA间平衡;对稳定性敏感的场景可退回SGA_TARGET/PGA_AGGREGATE_TARGET精细控制。
- SGA关键组件:结合负载调优SHARED_POOL_SIZE、DB_CACHE_SIZE、LOG_BUFFER;对共享池碎片敏感的系统可设置SHARED_POOL_RESERVED_SIZE。
- PGA与排序/哈希:启用PGA_AGGREGATE_TARGET并监控PGA命中率与磁盘排序比例,避免内存不足导致磁盘排序激增。
- 并行执行:在大表扫描、聚合、创建索引等场景合理设置对象级或会话级PARALLEL;OLTP谨慎使用并行,避免CPU过度争用。
- 统计信息与SQL重用:保持统计信息及时更新,使用绑定变量减少硬解析,提升共享池命中率与执行效率。
四 SQL与索引及存储架构
- SQL写法:避免SELECT ,优先覆盖索引;在WHERE中对索引列避免函数或表达式;能用JOIN替代复杂子查询;大批量DML采用批量提交*。
- 执行计划与诊断:使用EXPLAIN PLAN与DBMS_XPLAN.DISPLAY查看访问路径;借助AWR/ASH/ADDM定位Top SQL与等待事件,配合SQL调优顾问持续优化。
- 索引策略:为高频过滤/连接列建立B-Tree索引,必要时使用位图索引(低基数列、数据仓库场景);定期清理冗余/低效索引并重建碎片化严重的索引。
- 分区与分桶:对大表按时间/地域等维度分区,提升扫描与维护效率;结合业务选择列表/范围/哈希分区策略。
- 存储布局:将REDO日志、数据文件、归档分离到不同磁盘/阵列;利用条带化与写缓存(电池保护)提升写吞吐;定期校验坏块并开启db_block_checksum/db_lost_write_protect增强数据可靠性。
五 监控维护与上线验证
- 监控体系:持续跟踪AWR/ASH/ADDM报告、OSWatcher资源曲线与Oracle告警日志,关注DB Time、平均Active Sessions、Top 5 Timed Foreground Events、I/O吞吐与延迟。
- 变更与回滚:任何参数或SQL变更遵循“评估—压测—灰度—回滚”流程,变更前后保留AWR/ASH对比报告与回滚脚本。
- 备份与演练:定期执行RMAN备份并验证恢复流程,确保性能优化不以牺牲可恢复性为代价。
- 上线验证清单:
- 启用tuned-profiles-oracle并验证;2) 设置SGA/PGA/MEMORY_TARGET与打开文件/AIO上限;
- 配置异步I/O与合理的I/O调度;4) 落实分区/索引/统计信息策略;
- 采集调优前后AWR/ASH基线并量化改进;6) 建立备份与监控告警常态机制。