oracle memory_max_target memory_target配置说明

Oracle11g引入了memory_max_target和memory_target参数,简化了内存管理。当设置为非0时,开启内存自动管理,sga_target和pga_aggregate_target建议设为0。sga_max_size若不设置,则默认为memory_target的60%,否则分配为60%。数据库运行中,sga和pga会根据实际需求动态调整,但sga不超过sga_max_size设定值。可通过v$memory_target_advice、v$pga_target_advice和v$sga_target_advice查询内存使用建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

从oracle 11g 开始提供了memory_max_target、memory_target两个新的内存管理参数,进一步简化了Oracle的内存管理。

这两个参数和原来的sga_max_size、sga_target、pga_aggregate_target的关系经过查看文档和实际测试如下:

参考文档

MEMORY_TARGETicon-default.png?t=M1FBhttps://docs.oracle.com/cd/E57185_01/HFMAD/apbs09s03s03.html

Total Memory Sizing (MEMORY_TARGET)icon-default.png?t=M1FBhttps://docs.oracle.com/cd/E57185_01/HFMAD/apbs09s04s01.html

1、如果设置memory_max_target、memory_target为0,则关闭内存自动管理,内存的管理方式与oracle 10g保持一致

2、如果设置memory_max_target、memory_target为非0,则打开内存自动管理。这时候根据官方建议sga_target、pga_aggregate_target应当设置为0。这个时候如果sga_max_size也设置为了0,那么在数据库启动的时候,sga_max_size会自动设置为memory_target*0.6,也就是说sga_target最大不会超过memory_target*0.6,如果sga_max_size设置为了一个数值,那么在数据库启动的时候,sga会分配为memory_target*0.6,pga会分配为memory_target*0.4,后期会根据实际使用情况自动进行调整,但是不会超过sga_max_size。

比如:memory_target=100G,人为将alter system set sga_max_size=0 scope=spfile;那么数据库启动的时候sga_max_size会被设置为60G,也就是说sga运行期间不会超过60G。如果alter system set sga_max_size=90G scope=spfile;那么虽然数据库启动的时候sga分配成了60G,但是数据库运行期间会自动进行调整,但最高不超过90G

3、内存的查看及优化建议可以通过下面的三个语句进行查询

select * from v$memory_target_advice order by memory_size;
select * from v$pga_target_advice order by pga_target_for_estimate;
select * from v$sga_target_advice order by sga_size;

配置 Oracle 数据库的 `MEMORY_TARGET` 参数通常在数据库的初始化参数文件(如 `init.ora` 或 `spfile.ora`)中完成。`MEMORY_TARGET` 是一个动态参数,它允许 Oracle 自动管理 SGA(System Global Area,系统全局区)和 PGA(Process Global Area,进程全局区)的内存分配。这个参数在 Oracle 11g 引入,并在后续版本中得到增强。 具体步骤如下: 1. 首先确定当前的 `SGA_TARGET` 和 `PGA_AGGREGATE_TARGET` 参数设置。因为设置 `MEMORY_TARGET` 后,这两个参数将被自动管理,所以应该检查它们的当前值。 2. 通过 SQL*Plus 或者 Oracle Enterprise Manager 连接到数据库,并以管理员身份登录。 3. 使用 `ALTER SYSTEM` 命令来修改 `MEMORY_TARGET` 参数。例如,如果你想设置 `MEMORY_TARGET` 为 4GB,可以使用如下命令: ```sql ALTER SYSTEM SET MEMORY_TARGET=4G SCOPE=BOTH; ``` `SCOPE=BOTH` 表示修改立即生效,并且会被写入到参数文件中,这样在数据库重启后,修改也会保留。 4. 修改完毕后,Oracle 会根据配置自动调整 SGA 和 PGA 的大小,以最优化数据库的性能。 5. 验证 `MEMORY_TARGET` 是否正确设置,可以查询 `V$MEMORY_TARGET_ADVICE` 视图,来查看不同内存目标下的数据库性能建议。 注意事项: - 修改 `MEMORY_TARGET` 参数前,确保服务器有足够的物理内存来支持设定的值,以避免内存不足的问题。 - 根据数据库的工作负载和运行状况,可能需要调整 `MEMORY_MAX_TARGET` 参数,它是 `MEMORY_TARGET` 参数可以增加到的最大值。 - 进行修改之前,最好先参考 Oracle 官方文档和最佳实践,确保参数调整对你的数据库环境是安全且合适的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值