ORACLE_OCP之内存管理

ORACLE_OCP之内存管理

一、内存管理:概述

  • DBA必须将内存管理视为其工作的关键部分,因为:
    • 可用内存有限
    • 分配更多的内存来服务某些特定的功能从而提高整体性能
    • 自动调整内存分配通常是适当的配置,但是特定环境甚至短期条件可能需要进一步注意

二、管理内存组件

  • 自动内存管理(AMM)使您可以指定分配给实例的总内存(包括SGA和PGA)<不建议使用>
  • 自动共享内存管理(ASMM): <建议使用>
    • 使您可以通过一个初始化参数指定SGA总内存
    • 使Oracle服务器可以管理分配给共享池,Java池,缓冲区高速缓存,流池和大型池的内存量
  • 手动共享内存管理(MSMM):<不建议使用>
    • 通过多个单独的初始化参数确定组件的大小
    • 使用适当的Memory Advisor提出建议

三、高效的内存使用:准则

  • 在物理内存中设置更加适当的SGA和PGA空间大小。
  • 使用内存顾问。
  • 进行相关优化以便于更有效的利用内存
    • 减少整体物理I / O
    • 减少总内存需求

四、Automatic Memory Management(AMM): 概述

  • 借助自动内存管理,数据库服务器可以根据您的要求自动调整SGA和PGA的大小。

在这里插入图片描述

五、Oracle数据库内存参数

在这里插入图片描述

  • 上一张PPT中的图形显示了内存初始化参数的层次结构。 尽管您只需设置MEMORY_TARGET即可触发自动内存管理,但是您仍然可以为各种缓存设置下限值。 因此,如果子参数是用户设置的,则它们是最小值,低于该最小值,Oracle数据库服务器将不会自动调整该组件。
  • 如果SGA_TARGET和PGA_AGGREGATE_TARGET设置为非零值,则它们分别被视为SGA和PGA大小的最小值。 MEMORY_TARGET可以采用SGA_TARGET + PGA_AGGREGATE_TARGET到MEMORY_MAX_SIZE的值。
  • 如果设置了SGA_TARGET,则数据库服务器仅自动调整SGA子组件的大小。 PGA会自动进行调谐,而与是否进行显式设置无关。 但是,整个SGA(SGA_TARGET)和PGA(PGA_AGGREGATE_TARGET)不会自动调整,即不会自动增长或收缩。

六、监视自动内存管理

  • 使用以下视图监视自动内存管理:
    • V$MEMORY_DYNAMIC_COMPONENTS:所有内存组件的当前状态
    • V$MEMORY_RESIZE_OPS:最近800个内存调整大小请求的循环历史缓冲区
    • V$MEMORY_TARGET_ADVICE:MEMORY_TARGET初始化参数的调整建议

七、自动共享内存管理(ASMM)–概述

  • 自动适应工作负载变化
  • 最大限度地提高内存利用率
  • 帮助消除内存不足错误

在这里插入图片描述

八、理解自动共享内存管理

  • ASMM基于MMON在后台捕获的工作负载信息。
  • MMON使用内存顾问程序。
  • MMAN将内存移到最需要的位置。
  • 如果使用SPFILE(建议):
    • 各组件大小在关闭时保存
    • 保存的参数值用于启动数据库实例时引导相关内存组件大小
    • 无需重新学习最佳值

MMON 内存监视进程
MMAN 内存管理进程

九、启用自动共享内存管理

  • 从手动共享内存管理MSMM启用ASMM :

    • 获取SGA_TARGET的值:

      SELECT ((SELECT SUM(value) FROM V S G A ) − ( S E L E C T C U R R E N T S I Z E F R O M V SGA) - (SELECT CURRENT_SIZE FROM V SGA)(SELECTCURRENTSIZEFROMVSGA_DYNAMIC_FREE_MEMORY)) “SGA_TARGET” FROM DUAL;

      • 使用该值设置SGA_TARGET.
      • 将自动调整SGA中各子组件的值设置为0.
    • 从AMM切换到ASMM:

      • 将MEMORY_TARGET初始化参数设置为0。
      • 将自动调整大小的SGA各子组件的值设置为0.
      • 合理设置PGA_AGGREGATE_TARGET(PGA)的值
      • 合理设置SGA_TARGET(SGA)的值
    • 将MEMORY_TARGET初始化值设置为0:

      ALTER SYSTEM SET MEMORY_TARGET = 0;

    • 设置SGA_TARGET的值:

      ALTER SYSTEM SET SGA_TARGET=XXXM;
      SGA_TARET的值一定小于SGA_MAX_SIZE的值。
      ALTER SYSTEM SET PGA_AGGREGATE_TARGET=XXXM;

  • SGA各子组件:

    • SHARED_POOL_SIZE
    • LARGE_POOL_SIZE
    • JAVA_POOL_SIZE
    • DB_CACHE_SIZE00
    • STREAMS_POOL_SIZE

十、关闭ASMM

  • 将SGA_TARGET设置为0将禁用自动调整。
  • 自动调整的参数设置为其当前大小。
  • 整个SGA大小不受影响。

在这里插入图片描述

十一、使用V$PARAMETER查看内存组件大小

SGA_TARGET = 8G
DB_CACHE_SIZE = 0
JAVA_POOL_SIZE = 0
LARGE_POOL_SIZE = 0
SHARED_POOL_SIZE = 0
STREAMS_POOL_SIZE = 0
SELECT name, value, isdefault 
FROM   v$parameter
WHERE  name LIKE '%size';

十二、管理程序全局区(PGA)

在这里插入图片描述

注意:默认情况下,自动启用PGA内存管理。

十三、动态性能收集

在这里插入图片描述

十四、故障排除和优化需要使用的视图

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值