Oracle内存管理理论篇二
目标
- 了解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内存管理理论篇二的更多相关文章
- oracle 备份恢复篇(二)---rman 增备恢复--不完全恢复
一,环境准备 全备脚本: export TMP=/tmp export TMPDIR=$TMP export ORACLE_BASE=/u01 export ORACLE_SID=prod expor ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- Oracle数据库基础入门《二》Oracle内存结构
Oracle数据库基础入门<二>Oracle内存结构 Oracle 的内存由系统全局区(System Global Area,简称 SGA)和程序全局区(Program Global Ar ...
- Oracle内存详解之二 Library cache 库缓冲-转载
Library cache是Shared pool的一部分,它几乎是Oracle内存结构中最复杂的一部分,主要存放shared curosr(SQL)和PLSQL对象(function,procedu ...
- 深入解析开源项目之Universal-Image-Loader(二)内存---缓存篇
珍惜作者劳动成果,如需转载,请注明出处. http://blog.csdn.net/zhengzechuan91/article/details/50292871 Universal-Image-Lo ...
- 这篇关于Oracle内存管理方式的介绍太棒了!我必须要转发,很全面。哈哈~
"Oracle内存管理可分为两大类,自动内存管理和手动内存管理.其中手动内存管理又可分为自动共享内存管理,手动共享内存管理,自动PGA内存管理以及手动PGA内存管理.本文会简单的介绍不同的内 ...
- java学习笔记-JavaWeb篇二
JavaWEB篇二 45 HttpSession概述46 HttpSession的生命周期 47 HttpSession常用方法示例48 HttpSessionURL重写 49 HttpSession ...
- Oracle内存全面分析
Oracle内存全面分析 Oracle的内存配置与oracle性能息息相关.而且关于内存的错误(如4030.4031错误)都是十分令人头疼的问题.可以说,关于内存的配置,是最影响Oracle性能的配置 ...
- 【转】oracle内存分配和调优总结
转自 http://blog.itpub.net/12272958/viewspace-696834/ 一直都想总结一下oracle内存调整方面的知识,最近正好优化一个数据库内存参数,查找一些资料并且 ...
随机推荐
- [Arduino] 在串口读取多个字符串,并且转换为数字数组
功能如题目.在串口收到逗号分割的6串数字比如100,200,45,4,87,99然后在6个PWM端口3, 5, 6, 9, 10, 11输出对应PWM值代码注释很详细了,就不再说明了. //定义一个c ...
- iOS中的加密方式 与 文件解压缩
1.Base64加密方式 Base64是一种加密方法,可逆的加密. Base64中的可打印字符包括字母A-Z.a-z.数字0-9,这样共有62个字符./ + 填充 = echo -n BC|base6 ...
- 解决SecureCRT中文显示乱码
操作步骤 以下两步: 远程linux机器.修改环境变量LANG.例如在~/.bash_profile里面添加 export LANG=zh_CN.UTF8 重新登录之后生效. 现在查看一下当前设置: ...
- Oracle基础 PL-SQL编程基础(4) 异常处理
异常处理: 即使良好的PL-SQL程序也会遇到错误或者未预料的事件,一个优秀的程序都应该能够处理各种出错情况,尽可能的从错误中恢复.程序在运行时出现的错误成为异常.发生异常后,语句讲终止执行,PLSQ ...
- js 每秒刷新系统时间,可停止
<title>无标题页</title> <script language="javascript" type="text/javascrip ...
- 《UNIX环境高级编程》学习心得 三
输入和输出 1.文件描述符 文件描述符(file descriptor)可以理解为内核在某个进程中访问一个文件时,内核向进程返回的一个非负整数.在内核使用open或creat打开一个现有文件或者创建一 ...
- hdu 4411 最小费用流
思路:主要就是要把一个每个城市拆为两个点,建一条容量为1,费用为-inf的边,保证每个城市都会被遍历. /*最小费用最大流*/ #include<iostream> #include< ...
- HTML中的英文缩写标记、属性
我们知道是表示一个空格,因为在HTML中手动敲多个空格浏览器会认为是一个空格,具体的英文全称:Non Breaking Spacing 不间断空格
- 判断checked是否选中
if($('#checkbox-id').is(':checked')) { // do something }
- django 学习-15 .Django文件上传(用户注册)
1.vim blog/views.py from django.shortcuts import render_to_responsefrom django.http import HttpR ...