温馨提示×

Oracle在Ubuntu上的内存配置指南

小樊
55
2025-09-03 00:58:22
栏目: 云计算

一、操作系统层面优化

  1. 设置大页内存
    编辑 /etc/sysctl.conf,添加:
    vm.nr_hugepages=1024(根据物理内存调整,通常为内存的50%-70%),然后执行 sudo sysctl -p 生效。
  2. 关闭透明大页
    执行命令:
    echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/enabled
    echo "never" | sudo tee /sys/kernel/mm/transparent_hugepage/defrag
  3. 调整内核参数
    • vm.swappiness=0(减少交换空间使用)。
    • vm.max_map_count=262144(避免ORA-4030错误)。
      执行 sudo sysctl -p 使配置生效。

二、数据库参数配置

1. 内存管理方式选择

  • 自动内存管理(AMM)(推荐):
    通过 memory_targetmemory_max_target 统一管理SGA和PGA,无需单独设置组件参数。
    ALTER SYSTEM SET memory_target=16G SCOPE=SPFILE;  
    ALTER SYSTEM SET memory_max_target=32G SCOPE=SPFILE;  
    
  • 自动共享内存管理(ASMM)
    设置 sga_targetpga_aggregate_target,需手动配置SGA各组件(如 shared_pool_size)。
    ALTER SYSTEM SET sga_target=8G SCOPE=SPFILE;  
    ALTER SYSTEM SET pga_aggregate_target=2G SCOPE=SPFILE;  
    
  • 手动管理
    需单独设置 db_cache_sizeshared_pool_size 等参数,适合复杂场景。

2. 关键参数建议

  • SGA组件
    • shared_pool_size:建议为SGA的15%-20%,优化并发性能。
    • db_cache_size:设置为SGA的50%-60%,提升数据读取效率。
  • PGA
    • pga_aggregate_target:通常为物理内存的5%-15%,避免过度占用内存。

三、验证与监控

  1. 查看当前内存配置
    SHOW PARAMETER target;  -- 查看AMM参数  
    SHOW PARAMETER sga_target;  -- 查看SGA参数  
    
  2. 监控内存使用
    • 使用动态视图:
      SELECT * FROM v$sgainfo;(查看SGA使用情况)。
      SELECT * FROM v$pga_aggregate_target_advice;(查看PGA建议值)。
    • 命令行工具:topfree -hvmstat 1 5

四、注意事项

  • 避免过度配置:SGA+PGA总和不应超过物理内存的80%,预留足够内存给操作系统。
  • 测试环境验证:修改参数前先在测试环境验证,避免影响生产环境稳定性。
  • 版本差异:Oracle 12c及以上版本推荐使用AMM,11g需手动配置SGA/PGA。

参考来源:

0