• Oracle内存管理技术


    1.Oracle内存管理技术

    • 11g 新特性: AMM(Automatic Memory Management)
    • 10g 新特性: ASMM(Automatic Shared Memory Management)

    Tips:

    • 即便启动了AMM,仍然可以将相关的内存初始化参数设置为下限值,防止Oracle自动调整为低值或零值。
    • Oracle11g 建议使用AMM配置新数据库,然后监视总体内存分配的效果,后续可以将数据库切换到ASMM,以便更精准的控制SGA的总大小。

    2.配置自动内存管理(AMM)

    -- memory_max_target是静态参数,是memory_target的上限,修改需要重启库
    SQL> alter system set memory_max_target = 3G scope=spfile;
    SQL> shutdown immediate
    SQL> startup
    -- 配置AMM,memory_target值
    SQL> alter system set memory_target = 2G;
    -- 为更好的发挥AMM调整作用,设置下面参数为零值
    SQL> alter system set sga_target = 0;
    SQL> alter system set pga_aggregate_target = 0;
    

    3.监视自动内存管理(AMM)

    ## 3.1 通过EM查看 ## EM主页:服务器(Server) -> 数据库配置(Database Configuration) -> 内存指导(Memory Advisors) ## 3.2 直接查询动态性能视图 ## ``` SQL> select * from v$memory_target_advice order by memory_size;

    MEMORY_SIZE MEMORY_SIZE_FACTOR ESTD_DB_TIME ESTD_DB_TIME_FACTOR VERSION


        768                .25          402                   1          1
       1536                 .5          402                   1          1
       2304                .75          402                   1          1
       3072                  1          402                   1          1
       3840               1.25          402                   1          1
       4608                1.5          402                   1          1
       5376               1.75          402                   1          1
       6144                  2          402                   1          1
    

    8 rows selected.

    <h1 id="4">4.配置自动共享内存管理(ASMM)</h1>
    ## 4.1 从手动内存管理切换到ASMM ##
    

    -- 从手动内存管理切换到ASMM
    alter system set sga_target = 1G;
    -- 为更好的发挥ASMM作用,设置下面参数为零值
    SQL> alter system set shared_pool_size = 0;
    SQL> alter system set db_cache_size = 0;
    SQL> alter system set java_pool_size = 0;
    SQL> alter system set large_pool_size = 0;
    SQL> alter system set streams_pool_size = 0;

    ## 4.2 从AMM切换到ASMM ##
    

    -- 从AMM切换到ASMM,会根据当前SGA内存使用情况自动设置SGA_TARGET
    alter system set memory_target = 0;

    ## 4.3 禁用ASMM ##
    

    --下面命令使得所有初始化参数被设置为当前自动调整的值,禁用ASMM
    alter system set sga_target = 0;

    ## 4.4 ASMM需要手工调整下面的参数 ##
    

    ASMM只可以自动调整4.1中设置为零值的5个参数大小,而剩下的需要手工调整
    -- DB_KEEP_CACHE_SIZE
    -- DB_RECYCLE_CACHE_SIZE
    -- DB_nK_CACHE_SIZE
    -- LOG_BUFFER
    手工设置这些参数值,会从SGA_TRAGET指定的内存中减去这些内存量。

    <h1 id="5">5.配置自动PGA内存管理</h1>
    PGA_AGGREGATE_TARGET的值可以由AMM推出来,也可以明确设置。
    

    --PGA设置起点
    Oracle单实例可用内存设置为占机器物理内存的80%
    OLTP(在线事务处理):PGA占可用内存的20%
    DSS(查询使用大量内存):PGA占可用内存的50%~70%
    --查询pga相关动态视图
    select * from v$pgastat;
    select PGA_USED_MEM, PGA_ALLOC_MEM, PGA_FREEABLE_MEM, PGA_MAX_MEM from v$process;

    更多PGA相关可参考:《[相克军_Oracle体系_随堂笔记007-PGA](http://www.cnblogs.com/jyzhao/p/3819372.html)》
    <h1 id="6">Reference</h1>
    - OCP 认证考试指南 (1Z0-053)[M]. 清华大学出版社, 2010.
  • 相关阅读:
    javascript基础案例解析
    Javascript正则
    Javascript数组
    JS函数
    数据类型转换
    flex弹性布局
    css基础5
    css基础4
    场景化支付对现有技术、业务、产品和风险产生深刻的影响
    场景化支付的关键技术
  • 原文地址:https://www.cnblogs.com/jyzhao/p/5026377.html
Copyright © 2020-2023  润新知