• 如果将SGA_TARGET 和PGA_AGGREGATE_TARGET 设置为非零值,则可将其分别视
为SGA 和PGA 大小的下限值。MEMORY_TARGET 可以采用从SGA_TARGET +
PGA_AGGREGATE_TARGET 到MEMORY_MAX_SIZE 的值。
• 如果设置了SGA_TARGET,则数据库将仅自动优化SGA 的子组件的大小。PGA 的自
动优化与是否显式设置PGA 无关。但是,不会自动优化整个SGA (SGA_TARGET) 和
PGA (PGA_AGGREGATE_TARGET),即不自动增长或收缩。
监视自动内存管理:
• V$MEMORY_DYNAMIC_COMPONENTS 包含所有内存组件
的当前状态
• V$MEMORY_RESIZE_OPS 包含最近完成的800 个内存
大小调整请求的循环历史记录缓冲区
• V$MEMORY_TARGET_ADVICE 提供针对
MEMORY_TARGET 初始化参数的优化建议
动态性能视图V$MEMORY_DYNAMIC_COMPONENTS 显示所有动态优化的内存组件的当前
大小,其中包括SGA 和实例PGA 的总大小。V$MEMORY_TARGET_ADVICE 视图提供针
对MEMORY_TARGET 初始化参数的优化建议。
查看V$MEMORY_TARGET_ADVICE 视图时,MEMORY_SIZE_FACTOR 为1 的行显示当前
的内存大小(由MEMORY_TARGET 初始化参数设置)以及完成当前工作量所需的DB 时
间量。在之前以及之后的行中,将显示使用一组替代MEMORY_TARGET 大小的结果。如
果将MEMORY_TARGET 参数更改为替代大小中的任何一个,那么数据库将显示大小因子
(当前大小的乘数)以及完成当前工作量的估计DB 时间。请注意,如果内存总大小小于
当前MEMORY_TARGET 大小,则估计的DB 时间会增加.
ASMM 的工作原理
自动共享内存管理功能使用SGA 内存中介,此内存中介由可管理性监视器(MMON) 和内存
管理器(MMAN) 这两个后台进程实施。统计信息和内存指导数据由MMON 定期在内存中捕
获。MMAN 根据MMON 决策来协调内存组件的大小。SGA 内存中介会不断跟踪组件的大小
和待处理的大小调整操作。
SGA 内存中介会观察系统和工作量,以便确定理想的内存分配方案。SGA 内存中介每隔
几分钟就执行一次这种检查,使内存始终用在需要的地方。如果没有自动共享内存管理
功能,必须分别预计各组件在峰值时的内存需求,然后对其内存大小进行调整。
在工作量信息基础上,自动共享内存管理功能会:
• 定期在后台捕获统计信息
• 使用内存指导
• 进行假设分析,确定最佳内存分配方案
• 将内存移到最迫切需要的地方
• 如果使用了SPFILE,则在关闭时保存组件大小(这些大小可以在最后一次关闭前
重新起用
手动共享内存管理模式下启用ASMM
1.1. 获取SGA_TARGET 的值
SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE
FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET" FROM DUAL;
1.2. 使用该值设置SGA_TARGET。
ALTER SYSTEM SET SGA_TARGET=value [SCOPE={SPFILE|MEMORY|BOTH}]
自动内存管理模式更改为ASMM
2.1将初始化参数MEMORY_TARGET 设置为0
ALTER SYSTEM SET MEMORY_TARGET = 0 scope=both;
2.2自动设置大小的SGA 组件的值设置为0。完成后,重新启动实例
禁用ASMM
3.1将SGA_TARGET 设置为0,可以动态选择禁用自动共享内存管理
ALTER SYSTEM SET SGA_TARGET=0 [SCOPE={SPFILE|MEMORY|BOTH}]