以下是Linux环境下Oracle内存配置的核心建议,结合搜索资源中的关键信息整理:
共享内存配置
kernel.shmmax:设置为SGA最大值的1.1倍(如SGA=8G时,设为8.8G),确保单个共享内存段足够容纳SGA。kernel.shmall:计算公式为SGA大小/4KB,并向上取整(如SGA=8G时,设为2097152),避免共享内存段拆分。kernel.shmmni:建议设为4096,满足多共享内存段需求。大页内存启用
vm.nr_hugepages,数值为(SGA大小+100MB)/2MB(向上取整),并设置vm.hugetlb_shm_group为Oracle用户组,避免内存碎片。SGA_TARGET动态调整各组件比例,无需手动设置DB_CACHE_SIZE等参数。
SGA_TARGET:设置为物理内存的50%-60%(如16G物理内存设为8G-9.6G),需小于SGA_MAX_SIZE。SGA_MAX_SIZE:设为SGA_TARGET的1.1倍,预留扩展空间。PGA_AGGREGATE_TARGET控制总内存,Oracle自动分配排序、哈希等操作内存。
PGA_AGGREGATE_TARGET:设置为物理内存的20%-30%(如16G物理内存设为3.2G-4.8G),需预留部分内存给操作系统。V$PGASTAT视图,确保cache hit percentage(缓存命中率)>90%,避免频繁磁盘排序。避免内存过度分配
监控与调优
V$SGA和V$SGASTAT监控SGA组件使用情况,通过V$PGA_TARGET_ADVICE获取PGA配置建议。ALTER SYSTEM FLUSH SHARED_POOL),避免内存碎片。生产环境验证
# /etc/sysctl.conf
kernel.shmmax=17179869184 # 16G*1.1
kernel.shmall=4194304 # 16G/4KB
vm.nr_hugepages=8192 # (8G+0.1G)/2MB
-- 启用ASMM
ALTER SYSTEM SET SGA_TARGET=8G SCOPE=SPFILE;
ALTER SYSTEM SET SGA_MAX_SIZE=8.8G SCOPE=SPFILE;
-- 启用PGA自动管理
ALTER SYSTEM SET PGA_AGGREGATE_TARGET=3G SCOPE=SPFILE;
ALTER SYSTEM SET WORKAREA_SIZE_POLICY=AUTO SCOPE=SPFILE;
参考来源: