目标

  • 了解oracle内存管理方式
  • 掌握ASMM管理方式
  • 掌握AMM管理方式
  • 监控内存使用

  学习一个知识点时,最好先了解其历史。ORACLE近期的版本都对内存管理做了简化,从9i通过PGA_AGGREGATE_TARGET参数实现PGA的自动管理,10g通过Automatic Shared Memory Management(ASMM)实现SGA的自动管理,到11g通过Automatic Memory Management(AMM)实现内存(SGA+PGA)的自动管理。目前的11G版本,DBA只需要设置2个或者一个参数,就可以实现ORACLE对内存的自动管理。

Oracle的内存管理方式

  Oracle 11g 引入参数mymory_max_target 和memory_target 就是oracle的新特性自动内存管理,AMM 的引入,组合出来有 5 种内存管理形式。

  • 自动内存管理(AMM): memory_target=非0,是自动内存管理,如果初始化参数 LOCK_SGA = true ,则 AMM 是不可用的。
  • 自动共享内存管理(ASMM): 在memory_target=0 and sga_target=非0 是自动内存管理
  • 手工共享内存管理: memory_target=0 and sga_target=0   指定 share_pool_size 、db_cache_size 等 sga 参数
  • 自动 PGA 管理: memory_target=0 and workarea_size_policy=auto  and PGA_AGGREGATE_TARGET=值
  • 手动 PGA 管理: memory_target=0 and workarea_size_policy=manal  然后指定 SORT_AREA_SIZE 等 PGA 参数,一般不使用手动管理PGA

ASMM管理方式

1.1 ASMM的管理对象为SGA(shared pool;buffer pool;large pool;java pool;stream pool;redo buffer pool).
注:不包含缓冲池(Keep buffer pool;Recycle buffer pool;nK buffer pool)
1.2 设置ASMM的管理
i)从手动共享内存管理模式下启用ASMM
i1) 获取SGA_TARGET的值:
SELECT ((SELECT SUM(value) FROM V$SGA) - (SELECT CURRENT_SIZE FROM V$SGA_DYNAMIC_FREE_MEMORY)) "SGA_TARGET"
FROM DUAL;
i2) 使用该值设置SGA_TARGET。
i3) 将(SHARED_POOL_SIZE,LARGE_POOL_SIZE,JAVA_POOL_SIZE,DB_CACHE_SIZE,STREAMS_POOL_SIZE)值设置为0。 ii)从自动内存管理模式(AMM)切换到ASMM
ii1)将初始化参数MEMORY_TARGET 设置为0。
ALTER SYSTEM SET MEMORY_TARGET = 0;
数据库将根据当前的SGA 内存分配设置SGA_TARGET。
ii2)将自动设置大小的SGA组件(shared pool;buffer pool;large pool;java pool;stream pool;redo buffer pool)的值设置为0。
完成后,重新启动实例

AMM管理方式

1.1 AMM的管理对象为SGA(shared pool;buffer pool;large pool;java pool;stream pool;redo buffer pool)+PGA。注:此时sga_target为0无意义
1.2 设置AMM的管理
1.用sqlplus以sysdba链接数据库
2.计算MEMORY_TARGET的最小值
a.确定当前的 SGA_TARGET 和 PGA_AGGREGATE_TARGET
SQL> show parameter target
NAME TYPE VALUE
------------------------------------ ----------- ----------------
archive_lag_target integer 0
db_flashback_retention_target integer 1440
fast_start_io_target integer 0
fast_start_mttr_target integer 0
memory_max_target big integer 0
memory_target big integer 0
parallel_servers_target integer 16
pga_aggregate_target big integer 90M
sga_target big integer 272M
b.查询从数据库启动以来最大的PGA
select value from v$pgastat where name='maximum PGA allocated';
c.计算MEMORY_TARGET
memory_target = sga_target + max(pga_aggregate_target, maximum PGA allocated)
例如:SGA_TARGET = 272M ; PGA_AGGREGATE_TARGET = 90M , 且 maximum PGA allocated 为 120M, 那么 MEMORY_TARGET >= 392M (272M + 120M).
3.参照2c,修改memory_target的值
ALTER SYSTEM SET MEMORY_TARGET=392M; 1.3 MEMORY_TARGET,SGA_TARGET和PGA_AGGREGATE_TARGET之间的关系
如果将SGA_TARGET和PGA_AGGREGATE_TARGET设置为非零值,则可将其分别视为SGA和PGA大小的下限值。
MEMORY_TARGET 可以采用从SGA_TARGET+PGA_AGGREGATE_TARGET到MEMORY_MAX_SIZE的值

监控内存使用

        V$MEMORY_DYNAMIC_COMPONENTS 包含所有内存组件的当前状态
V$MEMORY_RESIZE_OPS 包含最近完成的800 个内存大小调整请求的循环历史记录缓冲区
V$MEMORY_TARGET_ADVICE 提供针对MEMORY_TARGET 初始化参数的优化建议

Oracle内存管理理论篇二的更多相关文章

  1. oracle 备份恢复篇(二)---rman 增备恢复--不完全恢复

    一,环境准备 全备脚本: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01 export ORACLE_SID=prod expor ...

  2. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  3. Oracle数据库基础入门《二》Oracle内存结构

    Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...

  4. Oracle内存详解之二 Library cache 库缓冲-转载

    Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedu ...

  5. 深入解析开源项目之Universal-Image-Loader(二)内存---缓存篇

    珍惜作者劳动成果,如需转载,请注明出处. http://blog.csdn.net/zhengzechuan91/article/details/50292871 Universal-Image-Lo ...

  6. 这篇关于Oracle内存管理方式的介绍太棒了!我必须要转发,很全面。哈哈~

    "Oracle内存管理可分为两大类,自动内存管理和手动内存管理.其中手动内存管理又可分为自动共享内存管理,手动共享内存管理,自动PGA内存管理以及手动PGA内存管理.本文会简单的介绍不同的内 ...

  7. java学习笔记-JavaWeb篇二

    JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...

  8. Oracle内存全面分析

    Oracle内存全面分析 Oracle的内存配置与oracle性能息息相关.而且关于内存的错误(如4030.4031错误)都是十分令人头疼的问题.可以说,关于内存的配置,是最影响Oracle性能的配置 ...

  9. 【转】oracle内存分配和调优总结

    转自 http://blog.itpub.net/12272958/viewspace-696834/ 一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且 ...

随机推荐

  1. [Java,MVC] Eclipse下搭建Spring MVC

    转自:http://blog.csdn.net/blue_jjw/article/details/8752466 一.新建Dynamic Web Project 一个web工程最基本的,只看3个地方, ...

  2. [ASP.Net]TableLayoutPanel的使用

    以前都是使用Panel.没有用过其他容器类.郁闷,要控制界面的自适应真是麻烦.平常用一用dock.anchor差不多了,但是,更复杂的情景下,就没法了.例如一行有多个控件,有的要求跟据窗口缩放,只缩放 ...

  3. 7. Android框架和工具之 android-percent-support-lib-sample(百分比支持)

    1. android-percent-support-lib-sample介绍: 谷歌最新的百分比布局库的示例项目.其实LinearLayout的layout_weight也能实现百分比效果,不过这个 ...

  4. Oracle基础 物理备份 冷备份和热备份(转)

    一.冷备份介绍:    冷备份数据库是将数据库关闭之后备份所有的关键性文件包括数据文件.控制文件.联机REDO LOG文件,将其拷贝到另外的位置.此外冷备份也可以包含对参数文件和口令文件的备份,但是这 ...

  5. ionic 中使用ion-slide-box

    ion-slide-box 用法: <ion-slide-box class="slide" auto-play="true" does-continue ...

  6. 【JS Note】字符串截取

    Js中字符截取常用的三个函数:slice().substring().substr(). slice(): slice(start,[end]) 第一个参数代表开始位置,第二个参数代表结束位置的下一个 ...

  7. linux /etc/sysctl.conf 禁止别人ping自己

    vi /etc/sysctl.conf如果希望屏蔽别人 ping 你的主机,则加入以下代码:# Disable ping requestsnet.ipv4.icmp_echo_ignore_all = ...

  8. C#反射(转载)

    [转]C#反射   反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等. ...

  9. Jquery 根据value值设置下拉列表(select)默认选中项

    方法一: $("#selIndustyType option[value='1']").attr("selected", "selected" ...

  10. Cocos2d-x移植到WindowsPhone8移植问题-框架rapidjson移植问题

    Cocos2d-x 3.0提供了JSON框架rapidjson可以在Windows Phone 8平台使用,如果没有进行必要的配置,在编译的时候会报错,document.h等头文件找不到的错误.在Wi ...