Oracle SGA参数调整
一. SGA的组成:
- 自动 SGA 管理后,Oracle 可以自动为我们调整以下内存池的大小:
- shared pool
- buffer cache
- large pool
- java pool
- streams pool
- 需要手动调整的参数
- log buffer
- db_nk_cache_size
- db_keep_cache_size
- db_recycle_cache_size
1.1 shared pool调整
1.1.1查询SGA的大小
- SQL> show parameter sga_target
- NAME TYPE VALUE
- ------------------------------------ ----------- ------------------------------
- sga_target big integer 276M
- SQL>
1.1.2 SGA组件
通过以上语句可以看到 SGA 的大小是289406976.那么它如何分配的,通过以下语句可以看到:
- SQL> select t.COMPONENT,t.CURRENT_SIZE/1024/1024 "CURRENT_SIZE (MB)"from v$sga_dynamic_components t;
- COMPONENT CURRENT_SIZE (MB)
- ------------------------------ -----------------
- shared pool 76
- large pool 4
- java pool 4
- streams pool 0
- DEFAULT buffer cache 188
- KEEP buffer cache 0
- RECYCLE buffer cache 0
- DEFAULT 2K buffer cache 0
- DEFAULT 4K buffer cache 0
- DEFAULT 8K buffer cache 0
- DEFAULT 16K buffer cache 0
- COMPONENT CURRENT_SIZE (MB)
- ------------------------------ -----------------
- DEFAULT 32K buffer cache 0
- ASM Buffer Cache 0
- 13 rows selected.
- SQL>
SGA 实际大小 = DB_CACHE_SIZE + DB_KEEP_CACHE_SIZE + DB_RECYCLE_CACHE_SIZE + DB_nk_CACHE_SIZE + SHARED_POOL_SIZE + LARGE_POOL_SIZE + JAVA_POOL_SIZE + STREAMS_POOL_SIZE(10g 中的新内存池)+ LOG_BUFFERS+11K(Redo Log Buffer 的保护页) + 1MB + 16M(SGA 内部内存消耗,适合于 9i 及之前版本)
1.1.3 查看对shared pool设置的建议
一般来说,设置 1GB 以上的 shared pool 不会给性能带来明显的提高,相反,这将给 Oracle管理 shared pool 以及监控 shared pool 的过程中带来较多的麻烦。只要将初始化参数 statistics_level 设置为 typical 或者all 就启动对 shared pool 的建议,basic 为关闭该功能。可以通过视图v$shared_pool_advice 来查看对shared pool设置的建议。
- select t.SHARED_POOL_SIZE_FOR_ESTIMATE "SP",
- t.ESTD_LC_SIZE "EL",
- t.ESTD_LC_MEMORY_OBJECTS "ELM",
- t.ESTD_LC_TIME_SAVED "ELT",
- t.ESTD_LC_TIME_SAVED_FACTOR "ELTS %",
- t.ESTD_LC_MEMORY_OBJECT_HITS "ELMO"
- from v$shared_pool_advice t
- ;
- SP EL ELM ELT ELTS % ELMO
- ---------- ---------- ---------- ---------- ---------- ----------
- 52 9 1136 3670 .9892 65132
- 60 15 2021 3700 .9973 65735
- 68 22 3147 3705 .9987 65859
- 15 76 29 3712 3710 1 65984
- 84 36 4359 3786 1.0205 66129
- 92 43 4828 3786 1.0205 66156
- 100 49 5785 3786 1.0205 66159
- 108 49 5785 3786 1.0205 66159
- 116 49 5785 3786 1.0205 66159
- 124 49 5785 3786 1.0205 66159
- 132 49 5785 3786 1.0205 66159
- SP EL ELM ELT ELTS % ELMO
- ---------- ---------- ---------- ---------- ---------- ----------
- 140 49 5785 3786 1.0205 66159
- 148 49 5785 3786 1.0205 66159
- 156 49 5785 3786 1.0205 66159
我们主要关注 estd_lc_time_saved_factor 列的值,当该列的值为 1 时表示再增加 shared pool的大小对性能的提高没有意义,对于上面例子来说,当 shared pool 为 76MB 时达到最佳。
- 注:
- --ESTD_LC_SIZE:估计库高速缓存的使用数量(以兆字节为单位)
- --ESTD_LC_MEMORY_OBJECTS: 估算共享池中库缓存的内存对象数
- --ESTD_LC_TIME_SAVED: 估算将可以节省的解析时间
- --ESTD_LC_TIME_SAVED_FACTOR: 估算的节省的解析时间与当前节省解析时间的比
- --ESTD_LC_MEMORY_OBJECT_HITS: 估算可以直接从共享池中命中库缓存的内存对象的命中次数
1.1.4 查看对buffer cache设置的建议
在如何设置 buffer cache 的大小上,从 Oracle 9i开始通过初始化参数 db_cache_advice来启动 buffer cache 顾问。Oracle 会监控 default 类型,keep 类型和 recycle 类型的 buffer cache的使用,以及其他 5 种不同数据库尺寸(2, 4, 8, 16 或 32KB)的 buffer cache 的使用。Oracle会根据当前所监控到的物理读的速率,估算出在不同大小尺寸的 buffer cache 下,所产生的可能的物理读的数量。Oracle将这些信息放入 v$db_cache_advice 中,每种类型的 buffer cache都会有相应的若干条记录来表示所建议的buffer cache 的大小。下面是对于默认数据块尺寸的 buffer cache 的建议大小应该是多少。
- SELECT size_for_estimate "target M", buffers_for_estimate,estd_physical_read_factor "physical_read %", estd_physical_reads
- FROM V$DB_CACHE_ADVICE
- WHERE name = 'DEFAULT'
- AND block_size = (SELECT value FROM V$PARAMETER WHERE name = 'db_block_size')
- AND advice_status = 'ON';
- target M BUFFERS_FOR_ESTIMATE physical_read % ESTD_PHYSICAL_READS
- ---------- -------------------- --------------- -------------------
- 16 1996 2.5056 30293
- 32 3992 1.5932 19262
- 48 5988 1.306 15790
- 64 7984 1.1789 14253
- 80 9980 1.0866 13137
- 96 11976 1.0254 12397
- 15 112 13972 1 12090
- 16 128 15968 1 12090
- 17 144 17964 1 12090
- 18 160 19960 1 12090
- 19 176 21956 1 12090
- 20
- 21 target M BUFFERS_FOR_ESTIMATE physical_read % ESTD_PHYSICAL_READS
- 22 ---------- -------------------- --------------- -------------------
- 23 188 23453 1 12090
- 24 192 23952 1 12090
- 25 208 25948 1 12090
- 26 224 27944 1 12090
- 27 240 29940 1 12090
- 28 256 31936 1 12090
- 29 272 33932 1 12090
- 30 288 35928 1 12090
- 31 304 37924 1 12090
- 320 39920 .8616 10417
- 21 rows selected.
- SQL>
- 注:
- --size_for_estimate : 预测性能数据的Cache大小
- --buffers_for_estimate: 预测性能数据的Cache大小(缓冲块数)
- --estd_physical_read_factor: 如果缓冲大小为SIZE_FOR_ESTIMATE 时,建议器预测物理读数与当前实际物理读数的比率值。如果当前物理读数为 0,这个值为空。
- --estd_physical_reads: 如果缓冲大小为 SIZE_FOR_ESTIMATE 时,建议器预测物理读数。
当前我们的DB_CACHE_SIZE为112-304M,可以看到,它的物理读因子为1,物理读数为12090。那么如何根据这些数据调整DB_CACHE_SIZE呢?给出一个方法,找到变化率较平缓的点作为采用值。因为建议器做预测是,DB_CACHE_SIZE的预测值的增长步长是相同的,是16M。我们按照这一步长增加DB_CACHE_SIZE,如果每次增加物理读降低都很明显,就可以继续增加,直到物理读降低不明显,说明继续增加DB_CACHE_SIZE没有太大作用。当然,性能和可用资源是天平的两端,你需要根据自己系统的实际情况调整。
Oracle SGA参数调整的更多相关文章
- Linux 内核参数 和 Oracle相关参数调整
Linux 内核参数 和 Oracle相关参数调整 分类: Oracle Basic Knowledge2009-10-14 12:23 9648人阅读 评论(0) 收藏 举报 oraclelinux ...
- Linux 下 Oracle 内核参数优化
数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...
- 关于Oracle的性能调整(一)
Oracle Tuning的一些总结 关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA.PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化 ...
- oracle SGA详解
SGA(System Global Area)系统全局区.这是一个非常庞大的内存区间,也是为什么开启oracle之后占用了很大内存的原因. SGA分为不同的池,我们可以通过视图v$sgastat查看, ...
- Oracle 内核参数
安装Oracle的时候,可以参考Oracle 的安装文档,来设置相关内核参数的值,但是有些参数的值还是需要根据我们自己的情况来进行调整.注:不同系统的参数不同,本篇针对linux. 一.Linux 系 ...
- oracle数据库内存调整之增加内存
注:本文来源:小颜Kevin <oracle数据库内存调整之增加内存> 模拟操作系统内存从2G增加为8G后,调整数据库内存参数,示例中参数不作为实际生产环境参考,因为因需所取,调整参数 ...
- Oracle初始化参数之memory_target
一.引言: Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整: Oracle 10g引入sga_target,可以自动对SGA进行调整: Oracle 11g则 ...
- oracle内核参数详解
一.前言 在生产中,我们安装oracle数据库时,为达到最优我们需要对操作系统的内核参数进行一定的调整.主要从内存.cpu.io以及网络等方面,根据实际情况进行调整.以下参数可供大家参考,如有不当之处 ...
- Galera集群server.cnf参数调整--Innodb存储引擎内存相关参数(一)
在innodb引擎中,内存的组成主要有三部分:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional memory pool).
随机推荐
- 前端必会html知识整理
1.浏览器内核: 1.ie:trident(三叉戟)内核 2.firefox:gecko(壁虎)内核 3.safari:webkit(浏览器核心)内核 ...
- 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理
最近要开始准备毕业设计了,学习熟悉了一些UML用例图.类图之类的,开始准备用自家PC电脑画图的时候发现Rational Ross没安装. 本以为简单,却碰上bin文件.琢磨好久,终于把Ross安上了. ...
- Javascript与Ajax
不使用jquery来处理ajax请求该怎么做? 首先要明确html中的某些数据需要从服务端获得,也就是客户端向服务端请求(request)数据,服务端就响应(response)这个请求,把客户端要的数 ...
- yii2.0根据query查看sql语句
时间长不用就总是忘记,好记性比不上烂笔头,记录下来备用: Yii::$app->getDb()->getQueryBuilder()->build($query));
- [改善Java代码]在equals中使用getClass进行类型判断
建议47: 在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题.这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JEE中J ...
- windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号
一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...
- Dynamic\Static\IsKinematic
1.Dynamic: 有Collider和RigidBody的GameObject, Unity视之为Dynamic. 适用于经常变换移动的对象. 2.Static: 只含有Collider的Game ...
- JavaScript常用的经典小技巧
1.屏蔽鼠标右键 <--body 方式--> <body oncontextmenu="window.event.returnValue=false"> & ...
- HTML+CSS3 纯代码实现转盘效果
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...
- 设计模式——设计模式之禅day1
单一职责 原则的定义是:应该有且仅有一个原因引起类的变更. 单一职责原则有什么好处: 类的复杂性降低,实现什么职责都有清晰明确的定义: 可读性提高,复杂性降低,那当然可读性提高了: 可维护性提高,可读 ...