温馨提示×

centos下oracle内存设置技巧

小樊
41
2025-09-09 18:16:47
栏目: 云计算

一、内存管理策略选择

  • AMM模式:通过memory_targetmemory_max_target参数统一管理SGA+PGA内存,需关闭大页内存,适用于简化管理场景。
  • ASMM模式:单独设置sga_targetpga_aggregate_target,配合大页内存提升效率,适用于需精细控制内存的场景。

二、关键参数配置

  1. 内存大小设置

    • SGA:通常设置为物理内存的70%-80%,可通过sga_target参数调整,需预留15%-20%给共享池(SHARED_POOL_SIZE)。
    • PGA:设置为可用内存的1/3-1/2,通过pga_aggregate_target控制。
    • 大页内存
      • 计算公式:HugePages数量=ceil(SGA_MAX_SIZE/大页大小)(默认2MB,可调整为更大)。
      • 配置步骤:修改/etc/sysctl.conf添加vm.nr_hugepages=数值,执行sysctl -p生效。
  2. 内核参数优化

    • 关闭透明大页:echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
    • 调整vm.swappiness=0(避免内存交换)。
    • 增加vm.max_map_count=262144(避免大表扫描报错)。
  3. 数据库参数调优

    • 启用自动内存管理:MEMORY_TARGETMEMORY_MAX_TARGET需同时设置且相等(AMM模式)。
    • 禁用自动共享内存管理(ASMM模式需手动设置SGA组件):SGA_TARGET=0

三、注意事项

  • 避免过度分配:内存总和不超过物理内存的80%,预留部分给系统和应用。
  • 测试验证:修改后需重启数据库并通过SHOW PARAMETER命令检查参数生效情况,使用topvmstat监控内存使用。
  • 版本差异:Oracle 12c+推荐使用AMM模式,11g及以下建议ASMM+大页组合。

参考来源

0