oracle18c中sga_target,Oracle之memory_target、memory_max_target、sga_target、sga_max_size学习

在Oracle数据库的优化管理中,内存使用管理是很重要的一部分,今天把学习到一个小知识点记录一下。主要是几个参数,如下:

一、MEMORY_MAX_TARGET

1、表示oracle实例的可以达到的最大内存大小(即可以使用操作系统内存的最大值);

2、静态参数,修改后需重启生效;

3、如果没有设置memory_max_target参数,那么会自动取memory_target的参数值;

4、默认值为系统的shm的值,而shm值为系统物理内存的一半。

二、MEMORY_TARGET

1、表示oracle实例使用的实际内存大小,不能大于memory_max_target;

2、动态参数,可以随时修改;

3、如果memory_target设为非0,则表示启用AMM。如设为0,则表示不启用自动内存管理(AMM);

4、要改大memory_target需要先调整shm的值,然后修改memory_max_target,最后调整memory_target。

三、SGA_MAX_TARGET

1、表示SGA可以达到的最大内存大小;

2、静态参数,修改后需重启生效。

四、SGA_TARGET

1、表示SGA实际使用的实际内存大小,不能大于sga_max_target;

2、动态参数,可以随时修改;

3、如果sga_target设为0,则表示不启用自动共享内存管理(ASMM),所有相关的内存组件需要手动设定大小(前提,在也不开启AMM的情况下)

五、memory_target设置和不设置对SGA/PGA的影响

1、如果memory_target设置为非0值(则表示启动用自动内存管理AMM)

情况1:sga_target和pga_aggregate_target已经设置大小,则这两个参数自动调整的值将不小于设置的大小

memory_target = sga_target + pga_aggregate_target

情况2:sga_target设置大小,pga_aggregate_target没有设置大小

那么pga_aggregate_target初始化值=memory_target-sga_target

情况3:sga_target没有设置大小,pga_aggregate_target设置大小

那么sga_target初始化值=memory_target-pga_aggregate_target

情况4:sga_target和pga_aggregate_target都没有设置大小

Oracle将根据数据库运行状况进行分配大小。但在数据库启动时会有默认比例:

sga_target = memory_target60%

pga_aggregate_target = memory_target40%

2、如果memory_target没有设置或 = 0(在11g中默认为0)

情况1:sga_target设置大小(ASMM)

自动调节SGA中的shared pool、buffer cache、redo log buffer、java pool、larger pool等内存大小。

PGA则由pga_aggregate_target的大小决定。

sga和pga不能自动增长和自动缩小。

情况2:sga_target和pga_aggregate_target都没有设置

SGA中的各组件大小都要明确设定,不能自动调整各组件大小。

PGA不能自动增长和收缩。

六、AMM与ASMM区别

区别:

AMM (Automatic Memory Management)自动内存管理;(11G才有的特性)

ASMM(Automatic shared Memory Management)自动共享内存管理;(10G有的特性)

AMM不支持HugePage,而ASMM支持HugePage;

AMM让数据库完全管理SGA、PGA的大小;

ASMM只能管理SGA的大小。

启用AMM:

将MEMORY_TARGET设为非0值,则启用。会自动调整SGA、PGA。

注:如果手动也设置了SGA、PGA,则表示自动调整时不小于手动设定的值。

启用ASMM:

将MEMORY_TARGET设为0,SGA_TARGET设为非0,STATISTICS_LEVEL参数设置为TYPICAL(默认值)或者ALL才能启用ASMM功能。

七、修改/dev/shm大小

ORACLE 从11g 版本开始,引入了一个自动内存管理(Automatic Memory Management)特性,该特性需要更多的共享内存(/dev/shm),因此如果决定应用该特性的话, 必须要确保共享内存大于ORACLE 中初始化参数MEMORY_MAX_TARGET 和MEMORY_TARGET(特别提示,这两个参数即自动内存管理特性对应的初始化参数)的值。

如果memory_max_target/memory_target设置过大,可能导致instance无法启动,报ORA-00845错误。

修改/etc/fstab中tmpfs对应的行;将原来的

tmpfs /dev/shm tmpfs defaults,size=1024M 0 0

改成tmpfs /dev/shm tmpfs default,size=2048M 0 0

这样tmpfs增大为1G,

重新mount /dev/shm使之生效。

mount -o remount /dev/shm

八、其他相关

/etc/sysctl.conf

SHMMAX参数:Linux进程可以分配的单独共享内存段的最大值。一般设置为内存总大小的一半。这个值的设置应该大于SGA_MAX_TARGET或MEMORY_MAX_TARGET的值,因此对于安装Oracle数据库的系统,shmmax的值应该比内存的二分之一大一些。

shmall参数:是全部允许使用的共享内存大小,shmmax 是单个段允许使用的大小。这两个可以设置为内存的 90%。例如 16G 内存,16 * 1024 * 1024 * 1024 * 90% = 15461882265,shmall 的大小为 15461882265/4k(getconf PAGESIZE可得到) = 3774873。

九、总结

10G时,可以将ORACLE开启ASMM,自动管理SGA;11G时,可以将ORACLE开启AMM,自动调整SGA、PGA。当然也该可以改回AMM。如果需要使用HugePage,则需开启ASMM。配合一些ORACLE自带的建议表(如v$sga_target_advice等),可以更好的分配内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值