一. SGA的组成:

  1. 自动 SGA 管理后,Oracle 可以自动为我们调整以下内存池的大小:
  2. shared pool
  3. buffer cache
  4. large pool
  5. java pool
  6. streams pool
  7. 需要手动调整的参数
  8. log buffer
  9. db_nk_cache_size
  10. db_keep_cache_size
  11. db_recycle_cache_size

1.1 shared pool调整

1.1.1查询SGA的大小

  1. SQL> show parameter sga_target
  2.  
  3. NAME TYPE VALUE
  4. ------------------------------------ ----------- ------------------------------
  5. sga_target big integer 276M
  6. SQL>

1.1.2 SGA组件

  通过以上语句可以看到 SGA 的大小是289406976.那么它如何分配的,通过以下语句可以看到:

  1. SQL> select t.COMPONENT,t.CURRENT_SIZE/1024/1024 "CURRENT_SIZE (MB)"from v$sga_dynamic_components t;
  2.  
  3. COMPONENT CURRENT_SIZE (MB)
  4. ------------------------------ -----------------
  5. shared pool 76
  6. large pool 4
  7. java pool 4
  8. streams pool 0
  9. DEFAULT buffer cache 188
  10. KEEP buffer cache 0
  11. RECYCLE buffer cache 0
  12. DEFAULT 2K buffer cache 0
  13. DEFAULT 4K buffer cache 0
  14. DEFAULT 8K buffer cache 0
  15. DEFAULT 16K buffer cache 0
  16.  
  17. COMPONENT CURRENT_SIZE (MB)
  18. ------------------------------ -----------------
  19. DEFAULT 32K buffer cache 0
  20. ASM Buffer Cache 0
  21.  
  22. 13 rows selected.
  23.  
  24. 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设置的建议。

  1. select t.SHARED_POOL_SIZE_FOR_ESTIMATE "SP",
  2. t.ESTD_LC_SIZE "EL",
  3. t.ESTD_LC_MEMORY_OBJECTS "ELM",
  4. t.ESTD_LC_TIME_SAVED "ELT",
  5. t.ESTD_LC_TIME_SAVED_FACTOR "ELTS %",
  6. t.ESTD_LC_MEMORY_OBJECT_HITS "ELMO"
  7. from v$shared_pool_advice t
  8. ;
  9.  
  10. SP EL ELM ELT ELTS % ELMO
  11. ---------- ---------- ---------- ---------- ---------- ----------
  12. 52 9 1136 3670 .9892 65132
  13. 60 15 2021 3700 .9973 65735
  14. 68 22 3147 3705 .9987 65859
  15. 15 76 29 3712 3710 1 65984
  16. 84 36 4359 3786 1.0205 66129
  17. 92 43 4828 3786 1.0205 66156
  18. 100 49 5785 3786 1.0205 66159
  19. 108 49 5785 3786 1.0205 66159
  20. 116 49 5785 3786 1.0205 66159
  21. 124 49 5785 3786 1.0205 66159
  22. 132 49 5785 3786 1.0205 66159
  23.  
  24. SP EL ELM ELT ELTS % ELMO
  25. ---------- ---------- ---------- ---------- ---------- ----------
  26. 140 49 5785 3786 1.0205 66159
  27. 148 49 5785 3786 1.0205 66159
  28. 156 49 5785 3786 1.0205 66159

  我们主要关注 estd_lc_time_saved_factor 列的值,当该列的值为 1 时表示再增加 shared pool的大小对性能的提高没有意义,对于上面例子来说,当 shared pool 为 76MB 时达到最佳。

  1. 注:
  2. --ESTD_LC_SIZE:估计库高速缓存的使用数量(以兆字节为单位)
  3. --ESTD_LC_MEMORY_OBJECTS: 估算共享池中库缓存的内存对象数
  4. --ESTD_LC_TIME_SAVED: 估算将可以节省的解析时间
  5. --ESTD_LC_TIME_SAVED_FACTOR: 估算的节省的解析时间与当前节省解析时间的比
  6. --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 的建议大小应该是多少。

  1. SELECT size_for_estimate "target M", buffers_for_estimate,estd_physical_read_factor "physical_read %", estd_physical_reads
  2. FROM V$DB_CACHE_ADVICE
  3. WHERE name = 'DEFAULT'
  4. AND block_size = (SELECT value FROM V$PARAMETER WHERE name = 'db_block_size')
  5. AND advice_status = 'ON';
  6.  
  7. target M BUFFERS_FOR_ESTIMATE physical_read % ESTD_PHYSICAL_READS
  8. ---------- -------------------- --------------- -------------------
  9. 16 1996 2.5056 30293
  10. 32 3992 1.5932 19262
  11. 48 5988 1.306 15790
  12. 64 7984 1.1789 14253
  13. 80 9980 1.0866 13137
  14. 96 11976 1.0254 12397
  15. 15 112 13972 1 12090
  16. 16 128 15968 1 12090
  17. 17 144 17964 1 12090
  18. 18 160 19960 1 12090
  19. 19 176 21956 1 12090
  20. 20
  21. 21 target M BUFFERS_FOR_ESTIMATE physical_read % ESTD_PHYSICAL_READS
  22. 22 ---------- -------------------- --------------- -------------------
  23. 23 188 23453 1 12090
  24. 24 192 23952 1 12090
  25. 25 208 25948 1 12090
  26. 26 224 27944 1 12090
  27. 27 240 29940 1 12090
  28. 28 256 31936 1 12090
  29. 29 272 33932 1 12090
  30. 30 288 35928 1 12090
  31. 31 304 37924 1 12090
  32. 320 39920 .8616 10417
  33.  
  34. 21 rows selected.
  35.  
  36. SQL>
  1. 注:
  2. --size_for_estimate : 预测性能数据的Cache大小
  3. --buffers_for_estimate: 预测性能数据的Cache大小(缓冲块数)
  4. --estd_physical_read_factor: 如果缓冲大小为SIZE_FOR_ESTIMATE 时,建议器预测物理读数与当前实际物理读数的比率值。如果当前物理读数为 0,这个值为空。
  5. --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参数调整的更多相关文章

  1. Linux 内核参数 和 Oracle相关参数调整

    Linux 内核参数 和 Oracle相关参数调整 分类: Oracle Basic Knowledge2009-10-14 12:23 9648人阅读 评论(0) 收藏 举报 oraclelinux ...

  2. Linux 下 Oracle 内核参数优化

    数据库的性能优化涉及到整个数据库运行环境的方方面面,诸如操作系统,Oracle自身,存储,网络等等几个大块.而操作系统则是Oracle稳定运行与最大化性能的基石.本文主要描述基于Linux系统下 Or ...

  3. 关于Oracle的性能调整(一)

    Oracle Tuning的一些总结 关于Oracle的性能调整,一般包括两个方面,一是指Oracle数据库本身的调整,比如SGA.PGA的优化设置,二是连接Oracle的应用程序以及SQL语句的优化 ...

  4. oracle SGA详解

    SGA(System Global Area)系统全局区.这是一个非常庞大的内存区间,也是为什么开启oracle之后占用了很大内存的原因. SGA分为不同的池,我们可以通过视图v$sgastat查看, ...

  5. Oracle 内核参数

    安装Oracle的时候,可以参考Oracle 的安装文档,来设置相关内核参数的值,但是有些参数的值还是需要根据我们自己的情况来进行调整.注:不同系统的参数不同,本篇针对linux. 一.Linux 系 ...

  6. oracle数据库内存调整之增加内存

    注:本文来源:小颜Kevin   <oracle数据库内存调整之增加内存> 模拟操作系统内存从2G增加为8G后,调整数据库内存参数,示例中参数不作为实际生产环境参考,因为因需所取,调整参数 ...

  7. Oracle初始化参数之memory_target

    一.引言: Oracle 9i引入pga_aggregate_target,可以自动对PGA进行调整: Oracle 10g引入sga_target,可以自动对SGA进行调整: Oracle 11g则 ...

  8. oracle内核参数详解

    一.前言 在生产中,我们安装oracle数据库时,为达到最优我们需要对操作系统的内核参数进行一定的调整.主要从内存.cpu.io以及网络等方面,根据实际情况进行调整.以下参数可供大家参考,如有不当之处 ...

  9. Galera集群server.cnf参数调整--Innodb存储引擎内存相关参数(一)

    在innodb引擎中,内存的组成主要有三部分:缓冲池(buffer pool),重做日志缓存(redo log buffer),额外的内存池(additional memory pool).

随机推荐

  1. 前端必会html知识整理

    1.浏览器内核:         1.ie:trident(三叉戟)内核         2.firefox:gecko(壁虎)内核         3.safari:webkit(浏览器核心)内核 ...

  2. 用DAEMON TOOLS打开rational ross 的bin文件并安装过程梳理

    最近要开始准备毕业设计了,学习熟悉了一些UML用例图.类图之类的,开始准备用自家PC电脑画图的时候发现Rational Ross没安装. 本以为简单,却碰上bin文件.琢磨好久,终于把Ross安上了. ...

  3. Javascript与Ajax

    不使用jquery来处理ajax请求该怎么做? 首先要明确html中的某些数据需要从服务端获得,也就是客户端向服务端请求(request)数据,服务端就响应(response)这个请求,把客户端要的数 ...

  4. yii2.0根据query查看sql语句

    时间长不用就总是忘记,好记性比不上烂笔头,记录下来备用: Yii::$app->getDb()->getQueryBuilder()->build($query));

  5. [改善Java代码]在equals中使用getClass进行类型判断

    建议47: 在equals中使用getClass进行类型判断 本节我们继续讨论覆写equals的问题.这次我们编写一个员工Employee类继承Person类,这很正常,员工也是人嘛,而且在JEE中J ...

  6. windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号

    一般情况下,windows下编辑过的文件在Linux下用vi打开行尾会多出一个^M符号,如下图: 这是因为Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的不同,Windows系 ...

  7. Dynamic\Static\IsKinematic

    1.Dynamic: 有Collider和RigidBody的GameObject, Unity视之为Dynamic. 适用于经常变换移动的对象. 2.Static: 只含有Collider的Game ...

  8. JavaScript常用的经典小技巧

    1.屏蔽鼠标右键 <--body 方式--> <body oncontextmenu="window.event.returnValue=false"> & ...

  9. HTML+CSS3 纯代码实现转盘效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  10. 设计模式——设计模式之禅day1

    单一职责 原则的定义是:应该有且仅有一个原因引起类的变更. 单一职责原则有什么好处: 类的复杂性降低,实现什么职责都有清晰明确的定义: 可读性提高,复杂性降低,那当然可读性提高了: 可维护性提高,可读 ...