首页主机资讯Oracle Linux系统如何优化

Oracle Linux系统如何优化

时间2025-12-09 00:37:04发布访客分类主机资讯浏览359
导读:Oracle Linux 性能优化实战清单 一 基线评估与总体策略 明确业务类型与负载特征:区分 OLTP(短事务、低时延)与 DWH/Analytics(大扫描、高吞吐),不同负载的 I/O 调度、内存回写与并发策略差异明显。 建立可复...

Oracle Linux 性能优化实战清单

一 基线评估与总体策略

  • 明确业务类型与负载特征:区分 OLTP(短事务、低时延)与 DWH/Analytics(大扫描、高吞吐),不同负载的 I/O 调度、内存回写与并发策略差异明显。
  • 建立可复现的基准:在变更前后使用代表性 SQL/报表进行 A/B 测试,结合 AWR/ASH/ADDM 与系统监控,量化 RT、TPS、IOPS、延迟、CPU/内存/IO 利用率 的变化。
  • 优先采用“先整体后局部”的顺序:先选对 调度器/I/O 路径/文件系统,再做 内核参数,最后做 数据库参数与 SQL
  • 变更遵循“小步快跑、可回滚”:每次只变更一类参数,保留回退方案,变更窗口内密切监控。
  • 虚拟化与容器场景需额外注意:避免双重调度、资源争用与 NUMA 跨节点访问。
    以上做法可借助 tuned-profiles-oracle 快速落地通用优化,并通过 AWR/ASH/ADDM 验证效果。

二 存储与文件系统优化

  • 调度器选择与场景化配置
    • 物理机/裸金属:数据库常用 deadline,对延迟有硬限制,适合混合负载。
    • SSD/NVMe:优先 noop(减少调度开销,交由设备/上层队列)。
    • 虚拟化:宿主机已做 I/O 合并与调度,来宾机更倾向 noop
    • 查看/设置示例:
      • 查看:cat /sys/block/sdX/queue/scheduler
      • 设置:echo deadline > /sys/block/sdX/queue/scheduler
  • 队列与设备参数(示例为典型数据库盘,数值需结合设备与负载压测微调)
    • echo 2048 > /sys/block/sdX/queue/nr_requests
    • echo 1024 > /sys/block/sdX/queue/max_sectors_kb
    • echo 1024 > /sys/block/sdX/device/queue_depth
    • echo 0 > /sys/block/sdX/queue/nomerges
    • echo 0 > /sys/block/sdX/queue/rotational
    • blockdev --setra 0 /dev/sdX
  • 文件系统与挂载选项
    • ext4:noatime,nodiratime,max_batch_time=0,nobarrier,discard(discard 对性能可能正/负,亦可用 fstrim 批处理)
    • XFS:nobarrier,discard
    • 条带化(LVM/RAID)务必设置合理的 stripe width,传统经验值 1M 对全表扫描与小随机 IO 都较友好。
  • 评估与验证
    • I/O:iostat -x 1 10 观察 %util、await、r/s、w/s
    • 内存:vmstat 1 10 观察 si/so(尽量减少 swap);
    • 网络:ping、traceroute、iperf 验证带宽与延迟。
      以上要点覆盖调度器、队列、设备与文件系统的关键实践,并通过工具量化效果。

三 内核与资源参数优化

  • 使用 tuned 快速启用数据库场景配置
    • 安装与启用:yum install -y tuned tuned-profiles-oracle;tuned-adm profile oracle;systemctl enable --now tuned
  • 内存与脏页回写(减少抖动、避免 swap)
    • vm.swappiness=10(降低换页倾向)
    • vm.dirty_background_ratio=3;vm.dirty_ratio=40
    • vm.dirty_writeback_centisecs=100;vm.dirty_expire_centisecs=50
  • 共享内存与信号量(Oracle SGA 依赖)
    • kernel.shmmax:建议不小于 SGA 目标值(常见为物理内存的 1/2,需为 HugePage 或标准页大小的整数倍)
    • kernel.shmall:ceil(shmmax/PAGE_SIZE),常见默认 2097152(约 8GB 共享页)
    • kernel.shmmni=4096
    • kernel.sem:四个值分别为 SEMMSL、SEMMNS、SEMOPM、SEMMNI;常用基线 250 32000 100 128,实际需按实例最大 PROCESSES 推算(SEMMSL≈最大 PROCESSES+10,SEMMNI≥128,SEMMNS≈SEMMSL×SEMMNI,SEMOPM≈SEMMSL)
  • 文件句柄与异步 I/O
    • fs.file-max:常见取值 6815744(按进程数估算:约 512×processes)
    • fs.aio-max-nr:常见取值 1048576(Oracle 11g+ 建议)
  • 网络(高并发/高带宽场景)
    • net.ipv4.ip_local_port_range=9000 65500
    • net.core.rmem_default=262144;net.core.wmem_default=262144
    • net.core.rmem_max=4194304;net.core.wmem_max=1048576
      以上参数需结合硬件容量与负载压测微调,并通过 sysctl -p 持久化。

四 大页 HugePages 与 NUMA 优化

  • HugePages 提升大内存访问效率(PGA 不使用大页)
    • 计算:HugePages = ceil(SGA / Hugepagesize)
    • 示例:SGA=20GB,Hugepagesize=2MB → 需 10240
    • 配置:/etc/sysctl.conf 设置 vm.nr_hugepages=10240;Oracle 启用大页;为稳妥可将 hugepages 作为引导参数加入 GRUB 提前分配。
  • NUMA 与 NUMA Balancing
    • 大 SGA/高并发时,优先采用 绑定内存亲和(numactl)本地 NUMA 访问
    • 对部分负载可考虑 关闭 numa_balancing(需压测验证)。
  • 验证:grep Huge /proc/meminfo;观察数据库启动日志中大页分配情况与前后性能对比。
    大页能显著降低 TLB miss 与页表开销,是 Oracle 常用且有效的系统级优化手段。

五 数据库层与 SQL 优化及验收

  • 数据库内存与并发
    • 合理规划 SGA/PGA(SGA 优先大页,PGA 适配排序/哈希/并行);
    • 控制 最大连接数/会话数,避免连接风暴;
    • 适度增大 日志缓冲区(LOG_BUFFER) 以缓解日志写入瓶颈。
  • SQL 与执行计划
    • 避免 全表扫描,合理使用 索引/分区/物化视图
    • 使用 绑定变量 降低解析开销;
    • 定期收集 统计信息,审查执行计划,清理无用/冗余索引。
  • 监控与验收
    • 使用 AWR/ASH/ADDM 定位等待事件与热点对象;
    • 以业务关键指标(如 RT、TPS、批处理时长)与系统指标(如 iostat %util、await、vmstat si/so)双重验收;
    • 形成“变更—监控—复盘—再优化”的闭环。
      数据库层优化与 SQL 调优是释放系统调优红利的关键环节,需与 OS 层优化协同进行。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Oracle Linux系统如何优化
本文地址: https://pptw.com/jishu/766547.html
Linux Oracle存储配置技巧 Linux Oracle如何监控与维护

游客 回复需填写必要信息