您好,欢迎访问一九零五行业门户网

oracle三对内存参数间关系之4sga

1、sga_target始终要= sga_max_size 否则 ora-00823: specified value ofsga_target greater than sga_max_size amm启动时(即memory_target=非0) 1、sga_target《memory_target《memory_max_target 如果 sga_targetmemory_target,则会提示: ora-00838:
1、sga_target始终要sga_max_size 
否则
ora-00823: specified value ofsga_target greater than sga_max_size
amm启动时(即memory_target=非0)
1、sga_target《memory_target《memory_max_target
如果sga_target>memory_target,则会提示:
ora-00838:指定的 memory_target 的值太小, 至少应为 xxxx m(该值等于sga_target与pga_aggregate_target之和,
因为memory_target》=sga_target与pga_aggregate_target之和)
2、sga_max_size《memory_target ,否则
ora-00851:sga_max_size 780140544 cannot be set to more than memory_target 41943
0400.
amm关闭时(即memory_target=0)
1、sga_target
ora-00849:sga_target 524288000 cannot be set to more than memory_max_target 0.
2、sga_max_size可以大于memory_max_target吗?
在参数文件里,即使当sga_target《memory_max_target时,如果sga_max_size>memory_max_target,则启动实例时也不会成功,也会出现提示与sga_target>memory_max_target时相同的提示:ora-00849:sga_target 524288000 cannot be set to more than memory_max_target 0.
只当参数文件里sga_max_size和memory_max_target都为0时,启动实例后,显示的sga_max_size可以大于memory_max_target。
总之,
amm启动时(即memory_target=非0),sga_max_size《memory_target:
sga_target《sga_max_size《memory_target
amm关闭时(即memory_target=0),由于memory_target=0相当于说memory_target这个参数不起作用此时,所以sga_max_size《memory_max_target:
sga_target《sga_max_size《memory_max_target
原本以为
amm启动时(即memory_target=非0),sga_target只要《memory_target,以及sga_max_size就行,sga_max_size和memory_target间可以无相关关系;amm关闭时(即memory_target=0),sga_target只要《memory_max_target以及sga_max_size就行,sga_max_size和memory_max_target间可以无相关关系。
事实是,在sga_max_size和memory_max_target(或是memory_target)间是有相关关系的。
估计因为oracle公司设计程序时考虑到如下效率问题吧:
如果在sga_max_size和memory_max_target(或是memory_target)间无相关关系时,
每次修改一次sga_target的值,程序都要进行两次判断sga_target修改后的值是否符合条件:
一是sga_target是否《memory_max_target(或是memory_target),二是sga_target是否sga_max_size
而如果在sga_max_size和memory_max_target(或是memory_target)间有相关关系,即sga_max_size memory_max_target(或是memory_target)时,
每次修改一次sga_target的值,程序只要进行一次判断sga_target修改后的值是否符合条件即可:
sga_target是否sga_max_size.
注释小结:
1、amm启动时(即memory_target=非0),才会出现
ora-00851:sga_max_size 780140544 cannot be set to more than memory_target 41943
0400.amm关闭时(即memory_target=0)不会出现ora-00851。amm启动时(即memory_target=非0)且sga_max_size>memory_target时,才会出现
ora-00851。
amm关闭时(即memory_target=0),才会出现ora-00849:sga_target 524288000 cannot be set to more than memory_max_target 0.无论是sga_target>memory_max_target还是sga_max_size>memory_max_target。当sga_max_size>memory_max_target时,即使此时sga_target也>memory_max_target,ora-00849里的sga_target值还是来自sga_max_size。
当memory_target=0时,由于memory_target=0而使memory_target参数不起作用,所以以memory_max_target为标准线,sga_max_size和sga_target围绕memory_max_target,即sga_max_size和sga_target与memory_max_target间有关系存在。
2、
启动实例时
sga_target要小于等于memory_max_target  ora-00849(memory_target=0amm关闭下,当sga_max_size大于等于memory_max_target时就会发生ora-00849,即使sga_target小于等于memory_max_target也会发生ora-00849)
 sga_max_size 要小于等于 memory_target  ora-00851
(当sga_max_size =非0,memory_target=0时例外,因为memory_target=0amm关闭即memory_target参数不起作用,所以此时sga_max_size与memory_target无关系)
实例运行时
sga_max_size 可以大于(修改后的)memory_target
无论启动实例时,还是实例运行时
memory_target要小于等于memory_max_target
(启动实例前,memory_target=非0,memory_max_target=0例外)
sga_target要小于等于sga_max_size
memory_target》=sga_target与pga_aggregate_target之和
因为无论启动实例时,还是实例运行时
memory_target》=sga_target与pga_aggregate_target之和
所以sga_target始终要小于等于memory_target
注释:
如果两个参数都是静态或是动态参数,那讨论她两关系时就不用区分实例启动前修改它们值和实例启动后(即实例运行时)修改它们值两个阶段。
如果两个参数,一个是静态,一个是动态参数,那讨论她两关系时就要区分实例启动前修改它们值和实例启动后(即实例运行时)修改它们值两个阶段。同一个层级上的两个参数只讨论实例启动前修改它们值这个阶段。例如,memory_target和memory_max_target都是amm程序里的参数:
memory_target要小于等于memory_max_target,
当memory_target=非0,memory_max_target=0时,启动实例后memory_max_target=memory_target值。
上下层级的两个参数区分实例启动前修改它们值和实例启动后(即实例运行时)修改它们值两个阶段来讨论。例如,sga_max_size和 memory_target
是amm程序里上下层级上的参数:
启动实例时
sga_max_size 要小于等于 memory_target ora-00851
实例运行时
sga_max_size 可以大于(修改后的)memory_target
因为
memory_max_target是静态参数,其实例运行期间修改的值在实例运行期间不起作用,该参数只在实例启动时起作用。
附加注释:
实例以workarea_size_policy=manual启动实例时可以在参数文件里pga_aggregate_target 可以设置为0,实例启动后显示的pga_aggregate_target的值为0。
从这个结论,说明有些动态参数也要分实例启动前后讨论。
下面是实验:
memory_target=0提示ora-00849: sga_target 1048576000(是1000m,不是500m) cannot be setto more than memory_max_target 943718400.
memory_max_target
memory_max_target >sga_target时 
参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=500m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00843: parameter not takingmemory_max_target into account
ora-00849: sga_target 1048576000(是1000m,不是500m) cannot be setto more than memory_max_target 943718400.
ora-01078: 处理系统参数失败
sql>
memory_max_target sga_max_size> sga_target 
参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=950m
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00843: parameter not takingmemory_max_target into account
ora-00849: sga_target 1048576000(是1000m,不是950m) cannot be setto more than memory_max_target 94
3718400.
ora-01078: 处理系统参数失败
sql>
sga_max_size参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=1200m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00843: parameter not takingmemory_max_target into account
ora-00849: sga_target 1048576000(是1000m,不是1200m) cannotbe set to more than memory_max_target 943718400.
ora-01078: 处理系统参数失败
sql>
说明
同时出现sga_max_sizeora-00849: sga_target1048576000(是1000m,不是1200m) cannot be set to more thanmemory_max_target 943718400.
memory_max_target > sga_max_size:
memory_max_target  
参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=800m
*.sga_target=1000m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00823:specified value of sga_target greater than sga_max_size
ora-01078: 处理系统参数失败
sql>
总之,memory_参数和sga_参数间的关系出错(即memory_max_target memory_target
;memory_ target memory_target)都是优先与sga_max_size 
memory_max_target >sga_target时sga_max_size> sga_target 
参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=800m
*.sga_target=700m
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
启动实例成功
sga_max_size参数:
*.memory_max_target=900m
*.memory_target=0
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=700m
*.sga_target=800m
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00823: specified value of sga_targetgreater than sga_max_size
ora-01078: 处理系统参数失败
sql>
说明
同时出现sga_max_sizeora-00849: sga_target1048576000(是1000m,不是1200m) cannot be set to more thanmemory_max_target 943718400.
附加:
当memory_target=0时,由于memory_target=0而使memory_target参数不起作用,所以以memory_max_target为标准线,sga_max_size和sga_target围绕memory_max_target,即sga_max_size和sga_target与memory_max_target间有关系存在。
memory_target=非0提示ora-00851: sga_max_size1048576000 cannot be set to more than memory_target 629145600.
以memory_max_target为标准线,sga_max_size和sga_target围绕此 
memory_max_target 且memory_target>sga_target时
参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=500m
sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle 例程已经关闭。
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00844: parameter not takingmemory_target into account
ora-00851: sga_max_size 1048576000 cannot be set to more thanmemory_target 6291
45600.
注释:
memory_max_target 时,还是提示memory_ target和 sga_max_size间的关系,说明memory_target=非0时是memory_target和 sga_max_size间有关系。
ora-01078: 处理系统参数失败
sql>
以memory_ target为标准线,sga_max_size和sga_target围绕此。 
memory_target 且memory_target >sga_target时 
pga_aggregate_target与sga_target之和 
参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=500m
sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle 例程已经关闭。
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00844: parameter not takingmemory_target into account
ora-00851: sga_max_size 1048576000 cannot be set to more thanmemory_target 6291
45600.
ora-01078: 处理系统参数失败
sql>
pga_aggregate_target与sga_target之和>memory_target参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=200m
*.workarea_size_policy='auto'
*.sga_max_size=1000m
*.sga_target=500m
sql> shutdown immediate
数据库已经关闭。
已经卸载数据库。
oracle 例程已经关闭。
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00844: parameter not takingmemory_target into account
ora-00851: sga_max_size 1048576000 cannot be set to more thanmemory_target 6291
45600.
ora-01078: 处理系统参数失败
sql>
参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=200m
*.workarea_size_policy='auto'
*.sga_max_size=600m
*.sga_target=500m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00838: specifiedvalue of memory_target is too small, needs to be at least 7
00m
ora-01078: 处理系统参数失败
sql>
说明
同时出现pga_aggregate_target与sga_target之和>memory_target和memory_ target 时,优先报错后者的相关错误消息,即ora-00851:sga_max_size 1048576000 cannot be set to more than memory_target 6291
45600.
memory_ target 且memory_targetsga_max_size> sga_target参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=800m
*.sga_target=700m
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00844: parameter not takingmemory_target into account
ora-00851: sga_max_size 838860800 cannot beset to more than memory_target 62914
5600.
ora-01078: 处理系统参数失败
sql>
sga_max_size 
参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=700m
*.sga_target=800m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00844: parameter not takingmemory_target into account
ora-00851: sga_max_size 734003200 cannot beset to more than memory_target 62914
5600.
ora-01078: 处理系统参数失败
sql>
只有当memory_ target 〉 sga_max_size且memory_target 〉sga_target时,sga_max_size
memory_ target 〉 sga_max_size且memory_target 
参数:
*.memory_max_target=900m
*.memory_target=600m
*.pga_aggregate_target=100m
*.workarea_size_policy='auto'
*.sga_max_size=500m
*.sga_target=700m
sql> startup pfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00838: specified value of memory_targetis too small, needs to be at least 800m
ora-01078: 处理系统参数失败
sql>
memory_ target 〉 sga_max_size且
memory_target sga_target时,推知sga_target〉 sga_max_size,也就是说
同时memory_target sga_target,sga_target〉 sga_max_size时,先抱错前者的ora-00838,非后者。
memory_target
sga_max_size时
参数:
*.memory_max_target=900m
*.memory_target=700m
*.pga_aggregate_target=0
*.workarea_size_policy='manual'
*.sga_max_size=600m
*.sga_target=800m
sql> startuppfile=e:\app\hc\product\11.2.0\dbhome_1\database\initmonkey.ora
ora-00838: specified value of memory_target is too small, needs to beat least 8
12m(粒度)
ora-01078: 处理系统参数失败
sql>

同时出现memory_target
sga_max_size
其它类似信息

推荐信息