Oracle 自己主动内存參数依赖性

图例:在该图中使用了下面參数名称缩写:

MT = MEMORY_TARGET
MMT = MEMORY_MAX_TARGET
ST = SGA_TARGET
PAT = PGA_AGGREGATE_TARGET
SMS = SGA_MAX_SIZE


MEMORY_TARGET 设置为非零值时:

假设设置了 SGA_TARGET 和 PGA_AGGREGATE_TARGET,则会分别将它们当作 SGA 大小和 PGA 大小的下限值。

MEMORY_TARGET 能够採用从 SGA_TARGET + PGA_AGGREGATE_TARGET 到 MEMORY_MAX_SIZE 的值。


假设设置了 SGA_TARGET 但未设置 PGA_AGGREGATE_TARGET,则仍会自己主动优化这两个參数。

PGA_AGGREGATE_TARGET 将初始化为 (MEMORY_TARGET-SGA_TARGET) 的值。

假设设置了 PGA_AGGREGATE_TARGET 但未设置 SGA_TARGET。则仍会自己主动优化这两个參数。SGA_TARGET 将初始化为 MEMORY_TARGET-PGA_AGGREGATE_TARGET 和 SGA_MAX_SIZE(假设用户设置了该參数)中的最小值,并自己主动优化子组件。

假设未设置不论什么參数,则无需不论什么下限值或默认值就可以自己主动优化这两个參数。

会在初始化过程中,将server的总内存以固定的比率分配给 SGA 和 PGA。

依据该策略。将在启动时为 SGA 分配 60% 的内存,为 PGA 分配 40% 的内存。

 

假设未设置 MEMORY_TARGET 或者将其显式设置为 0(默认值为 0):

假设设置了 SGA_TARGET,则数据库将仅自己主动优化 SGA 的子组件的大小。PGA 的自己主动优化与是否显式设置 PAG 无关。可是,不会自己主动优化整个 SGA (SGA_TARGET) 和 PGA (PGA_AGGREGATE_TARGET)。即不自己主动增长或收缩。

假设 SGA_TARGET 和 PGA_AGGREGATE_TARGET 都未设置,则将採用当前使用的策略;自己主动优化 PGA。不自己主动优化 SGA,须要显式设置某些子组件的參数 (SGA_TARGET)。


假设仅设置了 MEMORY_MAX_TARGET,则使用初始化文本文件进行手动设置时,MEMORY_TARGET 默觉得 0。

SGA 和 PGA 的自己主动优化行为默觉得 10g R2 的行为。


假设用户未设置 SGA_MAX_SIZE。则当用户设置了 MEMORY_MAX_TARGET 时,会在内部将 SGA_MAX_SIZE 设置为 MEMORY_MAX_TARGET(与用户是否设置了 SGA_TARGET 无关)。
在初始化參数文本文件里。假设省略了 MEMORY_MAX_TARGET 行,并包括了 MEMORY_TARGET 的值,则数据库会自己主动将 MEMORY_MAX_TARGET 设置为 MEMORY_TARGET 的值。

假设省略 MEMORY_TARGET 行,并包括 MEMORY_MAX_TARGET 的值,则 MEMORY_TARGET 參数默觉得 0。

启动后。假设 MEMORY_TARGET 未超过 MEMORY_MAX_TARGET 值,则能够将其动态更改为非零值。


posted on 2015-12-18 13:33  gcczhongduan  阅读(142)  评论(0编辑  收藏  举报