在Ubuntu中配置Oracle内存需根据版本选择管理方式,核心步骤如下:
MEMORY_TARGET参数统一管理SGA和PGA。sga_target、pga_aggregate_target)。使用free -h命令查看物理内存,确保预留足够内存给操作系统和其他进程。
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)
编辑/etc/sysctl.conf,添加以下内容以支持大页内存(需硬件支持):
vm.nr_hugepages=1024 # 根据内存大小调整,单位为MB
vm.swappiness=10 # 减少交换空间使用倾向
执行sudo sysctl -p使配置生效。
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%,避免过度占用系统资源。参考来源: