在Ubuntu中配置Oracle内存需根据版本选择管理方式,核心步骤如下:
一、内存管理方式选择
- Oracle 11g及以上:推荐使用自动内存管理(AMM),通过
MEMORY_TARGET参数统一管理SGA和PGA。 - Oracle 10g及以下:需手动配置SGA和PGA各组件(如
sga_target、pga_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%,避免过度占用系统资源。 - 生产环境建议先在测试环境验证配置,避免因参数不当导致数据库异常。
参考来源: