Ubuntu中Oracle内存如何配置

在Ubuntu中配置Oracle内存需根据版本选择管理方式,核心步骤如下:

一、内存管理方式选择

  • Oracle 11g及以上:推荐使用自动内存管理(AMM),通过MEMORY_TARGET参数统一管理SGA和PGA。
  • Oracle 10g及以下:需手动配置SGA和PGA各组件(如sga_targetpga_aggregate_target)。

二、具体配置步骤

1. 确认系统内存

使用free -h命令查看物理内存,确保预留足够内存给操作系统和其他进程。

2. 配置内存参数

  • AMM模式(推荐)

    -- 设置内存目标(总内存的50%-80%)  
    ALTER SYSTEM SET MEMORY_TARGET=8G SCOPE=SPFILE;  
    ALTER SYSTEM SET MEMORY_MAX_TARGET=16G SCOPE=SPFILE;  
    

    MEMORY_MAX_TARGET需大于MEMORY_TARGET,建议为2倍)

  • 手动模式

    -- 配置SGA组件(总内存的50%-70%)  
    ALTER SYSTEM SET SGA_TARGET=6G SCOPE=SPFILE;  
    ALTER SYSTEM SET SHARED_POOL_SIZE=1.5G SCOPE=SPFILE;  -- 建议为SGA的20%-30%  
    ALTER SYSTEM SET DB_CACHE_SIZE=3G SCOPE=SPFILE;      -- 建议为SGA的40%-50%  
    -- 配置PGA(总内存的10%-20%)  
    ALTER SYSTEM SET PGA_AGGREGATE_TARGET=2G SCOPE=SPFILE;  
    

    (需根据业务负载调整,如排序密集型任务可增加PGA_AGGREGATE_TARGET

3. 调整内核参数(可选优化)

编辑/etc/sysctl.conf,添加以下内容以支持大页内存(需硬件支持):

vm.nr_hugepages=1024  # 根据内存大小调整,单位为MB  
vm.swappiness=10      # 减少交换空间使用倾向  

执行sudo sysctl -p使配置生效。

4. 重启数据库生效

sqlplus / as sysdba  
SHUTDOWN IMMEDIATE;  
STARTUP;  

三、监控与调优

  • 查看内存使用情况
    -- SGA组件详情  
    SELECT * FROM V$SGAINFO;  
    -- PGA使用率  
    SELECT * FROM V$PGASTAT WHERE NAME='aggregate PGA target parameter';  
    
  • 调整建议
    • PGA_AGGREGATE_TARGET使用率长期低于50%,可适当降低;
    • SHARED_POOL_SIZE命中率低于90%,需增加其大小。

注意事项

  • 确保MEMORY_TARGET不超过物理内存的70%,避免过度占用系统资源。
  • 生产环境建议先在测试环境验证配置,避免因参数不当导致数据库异常。

参考来源: