温馨提示×

oracle在centos上的性能如何提升

小樊
38
2025-11-19 21:10:01
栏目: 云计算

总体思路 从系统层、数据库层、存储与网络层三线并行优化,先消除资源瓶颈,再校准内存与I/O,最后用AWR/ASH与系统工具持续验证。以下清单可直接落地执行,并在变更后对比前后指标确认收益。

一 操作系统与内核参数

  • 启用 Oracle 推荐的系统调优集:安装并启用 tuned-profiles-oracle,其为数据库场景预置了 CPU、内存与 I/O 的更优策略,便于快速获得稳健基线。
  • 典型内核参数(写入 /etc/sysctl.conf,执行 sysctl -p 生效):
    • 共享内存与信号量
      • kernel.shmmax ≈ 物理内存的0.85(字节)
      • kernel.shmall = shmmax / 4096
      • kernel.shmmni = 4096
      • kernel.sem = 250 32000 100 128
    • 文件句柄与 AIO
      • fs.file-max = 6815744
      • fs.aio-max-nr = 1048576
    • 网络
      • net.ipv4.ip_local_port_range = 9000 65500
      • net.core.rmem_default = 262144;net.core.rmem_max = 4194304
      • net.core.wmem_default = 262144;net.core.wmem_max = 1048586
    • 虚拟内存
      • vm.swappiness = 10(减少换页,避免数据库抖动)
  • 资源限制(写入 /etc/security/limits.conf
    • oracle soft nproc 2047;oracle hard nproc 16384
    • oracle soft nofile 1024;oracle hard nofile 65536
    • oracle soft stack 10240;oracle hard stack 10240
  • 大页(HugePages)
    • 建议为 SGA 预留大页,减少 TLB 缺失与页表开销;估算值可参考:HugePages ≈ SGA_Target / 2MB(以实际页面大小为准),并在 /etc/sysctl.conf 设置 vm.nr_hugepages,重启后核对 HugePages_Free/Total。
  • I/O 调度器
    • 物理机优先 deadline(稳定低延迟);SSD/NVMe 可用 noop;虚拟化环境通常选 noop 以避免双层调度。
    • 查看/设置示例:cat /sys/block/sdX/queue/scheduler;echo noop > /sys/block/sdX/queue/scheduler。

二 数据库内存与关键参数

  • 内存目标与分配
    • 仅数据库服务器可参考:为 OS 预留约**20%内存,余下80%**给 Oracle;其中
      • OLTP:PGA ≈ 80%×80%×内存;SGA 取余下为主
      • DSS/OLAP:PGA ≈ 80%×50%×内存;SGA 取余下为主
    • 自动内存管理
      • 启用 AMM(11g+):设置 memory_target/memory_max_target;或启用 ASMM(sga_target/pga_aggregate_target),并确保 statistics_level 为 TYPICAL/ALL
    • 常用示例(请按实际内存与负载微调)
      • ALTER SYSTEM SET sga_target = 16G SCOPE=BOTH;
      • ALTER SYSTEM SET pga_aggregate_target = 4G SCOPE=BOTH;
      • 或启用 AMM:ALTER SYSTEM SET memory_target = 20G SCOPE=SPFILE;
  • 关键组件与检查要点
    • 缓冲区命中率(OLTP 建议 ≥ 95%):1 − physical_reads/(db_block_gets+consistent_gets)
    • 共享池命中率(library cache):reloads/pins 建议 < 1%
    • 日志缓冲区:若 “redo buffer allocation retries” 增长或存在 “log buffer wait”,适度增大 log_buffer

三 存储与网络优化

  • 存储与文件系统
    • 优先 SSD/NVMe、条带化/RAID10、分离 REDO/ARCHIVE/数据/临时表空间 到不同磁盘组,降低争用。
    • 文件系统挂载选项建议使用 noatime,nodiratime,减少元数据开销。
  • I/O 验证
    • iostat -x 1 10:关注 %util、await、r/s、w/s;优化后应看到 await 下降、%util 更均衡。
  • 网络
    • 合理放大 net.core.somaxconn、优化 rmem/wmem;跨机房/高吞吐场景建议启用 RDS/绑定网卡 并进行 iperf 带宽验证。

四 SQL 与索引及维护

  • SQL 与索引
    • 消除/降低 全表扫描,为大表热点列建立合适索引;减少 SELECT *,用绑定变量避免硬解析;根据数据量与访问模式选择 HASH JOIN/NESTED LOOP 等合适连接方式。
  • 统计信息与计划
    • 定期收集统计信息:EXEC DBMS_STATS.GATHER_SCHEMA_STATS(ownname=>‘SCHEMA’, estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE);
  • 监控与诊断
    • 利用 AWR/ASH 报告定位 Top SQL、等待事件与瓶颈;结合 OS 工具(top、vmstat、iostat)闭环验证。

五 实施步骤与验证

  • 基线采集
    • 记录优化前 AWR/ASH、iostat、vmstat、网络吞吐与延迟,作为对比基线。
  • 分阶段变更
    • 先启用 tuned-profiles-oracle 与内核/资源限制;再校准 SGA/PGA;随后优化 I/O 调度器/存储布局;最后进行 SQL/索引 与统计信息维护。
  • 效果验证
    • 对比优化前后:事务/查询 响应时间、吞吐量、AWR 等待事件、iostat 的 await/%util、vmstat 的 si/so 等关键指标;异常回滚并细化参数。

0