oracle在centos上的性能调优技巧有哪些
小樊
42
2025-11-17 20:01:39
Oracle在CentOS上的性能调优技巧
一 操作系统与内核参数
- 文件句柄与AIO:提高可打开文件与异步I/O能力,建议将fs.file-max提升到约6815744,fs.aio-max-nr提升到约1048576,以支持高并发会话与I/O。
- 信号量与共享内存:按负载设置kernel.sem = 250 32000 100 128;根据内存计算并配置kernel.shmmax(如物理内存的约85%)与kernel.shmall(按页大小计算),避免共享内存不足导致实例无法启动。
- 网络栈:扩大本地端口范围net.ipv4.ip_local_port_range = 9000 65500,提升短连接并发;增大TCP缓冲net.core.rmem_default/wmem_default = 262144、net.core.rmem_max/wmem_max = 4194304/1048586;提升监听队列net.core.somaxconn = 4096。
- 虚拟内存与透明大页:将vm.swappiness调低至约10以减少换页;对大SGA场景建议启用HugePages并禁用AMM(即不使用memory_target/memory_max_target),同时设置Oracle用户的memlock限制(在**/etc/security/limits.conf**中配置,单位为KB),以避免SGA被换出并减少页表开销。
- 存储与文件系统:优先使用SSD/NVMe;选择XFS/ext4等适合数据库负载的文件系统,并按负载设置挂载选项与块大小。
二 内存与实例参数
- 自动内存管理:在资源可控前提下启用AMM(设置memory_target/memory_max_target),让Oracle自动在SGA与PGA间分配;若计划使用HugePages,需禁用AMM并改用手动内存目标(见上节)。
- 手动内存分配:按负载设置SGA_TARGET(如4G)与PGA_AGGREGATE_TARGET(如1G),并通过ALTER SYSTEM SET … SCOPE=BOTH在线生效。
- 日志与共享池:适度增大LOG_BUFFER(如64M)以降低日志写入等待;根据解析压力调整SHARED_POOL_SIZE与SHARED_POOL_RESERVED_SIZE,保留关键对象以减少抖动。
- 并发与会话:结合硬件与中间件设置合理的PROCESSES/SESSIONS,避免连接风暴与资源争用。
三 存储I/O与文件系统
- 存储硬件:优先SSD/NVMe与多盘条带化(RAID 10/条带化卷),提升IOPS与吞吐;确保充足的I/O通道带宽。
- 文件系统与挂载:选择XFS/ext4,并结合业务特点设置挂载选项(如noatime等减少元数据开销);为数据文件、重做日志、归档日志分别规划磁盘/阵列,避免争用。
- 表空间与条带:对大表/大索引使用ASM或条带化文件系统布局,提升顺序与并发I/O性能。
四 SQL与索引及并发
- SQL编写:避免SELECT ,只查询必要列;使用绑定变量减少硬解析;用EXPLAIN PLAN*与执行计划分析定位全表扫描、低效连接与隐式转换等问题。
- 索引策略:为高频过滤/连接列建立合适索引,优先覆盖索引减少回表;删除未使用/重复索引以降低DML维护成本;对高碎片索引按需重建。
- 分区与并行:对大表采用分区(范围/列表/哈希)以加速裁剪与维护;在合适场景启用并行查询(表级并行度或查询提示),并设置会话级并行策略(如parallel_degree_policy = AUTO)。
- 事务与锁:控制事务粒度与持有时间,减少行级锁/表级锁争用,避免长事务阻塞业务。
五 监控维护与持续优化
- 基线报告:定期生成AWR/ADDM报告,识别Top SQL、等待事件与瓶颈(如log file sync、db file sequential/scattered read等),据此定向优化。
- 统计信息与空间:使用DBMS_STATS定期收集对象统计信息,确保优化器选择更优执行计划;对高碎片对象执行重组/重建。
- 连接与负载:监控会话/进程使用率与连接池配置,避免连接泄漏与过度并发;结合业务峰谷调整连接池与SGA/PGA目标。
- 变更流程:任何参数或结构变更先在测试环境验证,变更窗口内做好回滚预案与性能回归对比。