1. SGA

1.1 Buffer Cache

1.2 Shared Pool

2. PGA

基准SGA和PGA的设置

对OLTP系统:

SGA = 物理内存 * 80% * 80%

PGA = 物理内存 * 80% * 20%

对OLAP系统:

SGA = 物理内存 * 80% * 50%

PGA = 物理内存 * 80% * 50%

1. 1 Buffer Cache

Buffer Cache如果想手工设定,建议设定为SGA的80%

与Buffer Cache可能有关的等待事件有:

1) Latch:cache buffer chains

2) Latch:cache buffer LRU chains

3) Buffer busy waits

4) Read waits

5) Free buffer waits

对1)和2),可能是由于存在热块数据。

查询热块:

点击(此处)折叠或打开

col owner format a10

col object_name format a10

col object_type format a10

col statistic_name format a20

SELECT * FROM ( SELECT OWNER, OBJECT_NAME,

OBJECT_TYPE, STATISTIC_NAME, SUM(VALUE)

FROM V$SEGMENT_STATISTICS

GROUP BY OWNER, OBJECT_NAME, OBJECT_TYPE,

STATISTIC_NAME

ORDER BY SUM(VALUE) DESC)

WHERE ROWNUM < 10;

OWNER      OBJECT_NAM OBJECT_TYP STATISTIC_NAME       SUM(VALUE)

---------- ---------- ---------- -------------------- ----------

BAAN       TWHWMD4004 INDEX      logical reads        3935487344

40$IDX1

BAAN       TTCIBD0014 TABLE      logical reads        2770298080

40

BAAN       TTDPUR4014 INDEX      logical reads        2599466128

40$IDX1

BAAN       TWHINH2104 TABLE      logical reads        1618469696

40

BAAN       TWHINH3124 INDEX      logical reads        1526287552

40$IDX2

BAAN       TWHWMD4004 TABLE      logical reads        1257102528

40

BAAN       TTCIBD0014 INDEX      logical reads        1225452368

40$IDX1

BAAN       TWHINR1104 TABLE      logical reads         943541312

40

BAAN       TWHINR1104 TABLE      physical reads        560351905

40

对于热块争用,最好能从应用层面解决。数据库方面,可以考虑反向键索引和哈希分区。

对于3) Buffer busy waits

表示多个进程访问同一个Buffer Cache。以下是详细解释:

当一个session想要访问/修改buffer cache的block,首先需要检查该block是否存在于buffer cache,检查该block是否存在于buffer cache中是通过HASH算法来实现的,另外检查相同的SQL语句是否存在于library cache中也是通过HASH算法实现的。要判断block是否存在于buffer cache中,就需要扫描一条chain,该chain中具有block的信息。而扫描这个chain必须获得一个latch,防止并发对chain照成破坏,如果未能获得该latch,就说明此block是hot block,同时在数据库中标记一个latch: cache buffers chains这个等待事件。如果该block存在于buffer cache中就不需要物理读,如果不存在,就需要物理读取该block到buffer cache中。为了能够读取,并修改该block,我们就需要pin住该block,防止并发对于该block造成破坏,所以如果别的session不能获得pin,Oracle就会标记一个buffer busy waits等待事件。

引起该事件可能的原因包括全表扫描、索引过多、使用了序列来做索引等。

当出现了比较严重的cache buffers chains竞争时,我们可以找出该热点块的具体对象,找出引起该竞争的SQL语句,修改不良的SQL。如果不能更改应用,可以尝试将数据分散,设置高的pctfree,使用较小的block size,查看SQL执行计划是否正确,减少逻辑读。

点击(此处)折叠或打开

SELECT object_name, value

FROM V$SEGMENT_STATISTICS

WHERE statistic_name = 'buffer busy waits'

AND value > 2000;

对于4)read waits,包括db file sequential read, db file scattered read,

前者表示扫描索引,可以检查索引是否有大量碎片;

后者表示存在全表扫描。

详细见以下博文:

http://blog.itpub.net/22621861/viewspace-1309661/

对于5) Free Buffer waits

表示将Buffer Cache写入到磁盘的速度,赶不上其他应用申请空闲Buffer Cache的速度。解决办法:

1)是否有全表扫描

2)检查db_cache_size设置

3)检查DB_WRITER_PROCESSES,建议不超过CPU个数。

共享池问题

可参考:

语句共享性问题

http://blog.itpub.net/22621861/viewspace-1307202/

PGA

对于PGA,应重点关注PGA命中率(PGA Cache Hit%)

与PGA有关的等待事件有direct path read temp和direct path write temp。

这些等待事件表示PGA空间有限,导致了临时表空间操作。

查询在PGA和临时表空间之间多次往返操作的SQL

点击(此处)折叠或打开

SELECT sql_text,

sum(onepass_executions) onepass_cnt,

sum(multipasses_executions) mpass_cnt

FROM V$SQL s, V$SQL_WORKAREA wa

WHERE s.address = wa.address

GROUP BY sql_text

HAVING sum(onepass_executions+multipasses_executions) > 0;

分析PGA使用状况

点击(此处)折叠或打开

COL NAME FORMAT A30

SELECT * FROM V$PGASTAT

NAME                                VALUE UNIT

------------------------------ ---------- ------------------------

aggregate PGA target parameter  199229440 bytes

aggregate PGA auto target       131300352 bytes

global memory bound              39845888 bytes

total PGA inuse                  53477376 bytes

total PGA allocated             107995136 bytes

maximum PGA allocated           176616448 bytes

total freeable PGA memory        12451840 bytes

process count                          27

max processes count                    36

PGA memory freed back to OS     527171584 bytes

total PGA used for auto workar     137216 bytes

NAME                                VALUE UNIT

------------------------------ ---------- ------------------------

eas

maximum PGA used for auto work    4290560 bytes

areas

total PGA used for manual work          0 bytes

areas

maximum PGA used for manual wo     268288 bytes

rkareas

NAME                                VALUE UNIT

------------------------------ ---------- ------------------------

over allocation count                   0

bytes processed                 923526144 bytes

extra bytes read/written                0 bytes

cache hit percentage                  100 percent

recompute count (total)              1969

重点关注over allocation count条目,该条目表示超出PGA_AGGREGATE_TARGET参数设置的PGA目标值。此时,应考虑增大PGA_AGGREGATE_TARGET

oracle pga建议值,对SGA和PGA的优化建议相关推荐

  1. oracle实例的内存(SGA和PGA)调整,优化数据库性能

    一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2) ...

  2. oracle实例的内存(SGA和PGA)的调整和优化(转载)

    一.名词解释 (1)SGA:SystemGlobal Area是OracleInstance的基本组成部分,在实例启动时分配;系统全局域SGA主要由三部分构成:共享池.数据缓冲区.日志缓冲区. (2) ...

  3. Oracle内存管理(修改SGA与PGA)

    目录: Oracle11g数据库内存管理 一.Oracle数据库内存管理概念: 二.内存管理方式的切换: 三.修改实例SGA与PGA大小(ASMM) 1.使用sqlplus命令在数据库中修改 (1). ...

  4. Oracle 自己主动内存管理 SGA、PGA 具体解释

    ASMM自己主动共享内存管理: 自己主动依据工作量变化调整 最大程度地提高内存利用率 有助于消除内存不足的错误 SYS@PROD>show parameter sga NAME          ...

  5. Oracle之内存结构(SGA、PGA)

    像很多数据库如db2,mysql等等都是关系型数据库.但是他们也有区别,区别就在数据库的架构上面. 整个Oracle来讲就两个部分,一部分是实例(由两部分构成,一部分是里面的内存结构由sga和Pga构 ...

  6. H5性能测试(优化建议)

    如何打造一个移动端H5性能平台?听起来是否有点高大上,不知道如何下手.不要紧张,我们来手把手教大家打造自己的移动端H5性能测试平台. 功能篇 [H5前端性能平台可以做什么] 以前我们要测试移动端H5性 ...

  7. 个人笔记:ORACLE大页内存hugepage和SGA、PGA的经验,SGA并不是越大越好

    背景:ORACLE 11.2,SGA 64G,PGA 8G,压测出现操作系统内存耗尽 WARNING: Heavy swapping observed on system in last 5 mins ...

  8. Oracle体系结构之内存结构(SGA、PGA)

    Oracle体系结构之内存结构(SGA.PGA) 一.内存结构 SGA(System Global Area):由所有服务进程和后台进程共享: PGA(Program Global Area):由每个 ...

  9. oracle查询sga以及pga的大小,SGA/PGA的设置与调整

    SGA/PGA的设置与调整 2013-04-10 SGA是用于存储数据库信息的内存区,该信息为数据库进程所共享.它包含Oracle 服务器的数据和控制信息,它是在Oracle服务器所驻留的计算机的实际 ...

最新文章

  1. 2018-3-7 HDFS架构
  2. Android SDK版本号 与 API Level 对应关系
  3. turnitin时间
  4. 使用sprc097的DSP281x_usDelay.asm
  5. 我的世界大佬最多的服务器,《我的世界》门槛最高的红石服务器TIS,看看你跟大佬们的差距吧...
  6. python重命名文件夹下所有文件_Python3.4.3重命名当前文件夹下的文件
  7. 快速傅里叶变换学习笔记(更新中)
  8. 用简单 JS 实现代替 MYBATIS LOG PLUGIN 的功能
  9. 理财通 for N9
  10. AI笔刷 600+专业ai矢量笔刷套装(含安装教程)
  11. 12平键标准尺寸规格表_平键标准尺寸规格表
  12. MATLAB命令行窗口常见命令与功能
  13. ubuntu服务器pdf文件大小,Ubuntu下的PDF阅读器okular安装使用介绍
  14. button 点击的涟漪效果
  15. RedHat 5 环境下 DHCP配置详解。
  16. 算法学习【1】三个空汽水瓶可以换一瓶汽水
  17. Pacemaker-学习总结(概念、结构)
  18. 抖音爆款小游戏《我飞刀玩得贼6》性能优化案例分享
  19. postgresql encode函数
  20. git前端工程实现ci_gitlab中vue前端项目CI/CD部署笔记

热门文章

  1. 如何限流,具体实现有哪些?
  2. 不可替代的测试人:一文解释探索性测试是什么
  3. 关于STM32串口3的使用,接收并解析一帧数据
  4. 数字调制BPSK/QPSK/QAM/ASK/FSK/PSK
  5. 【荐藏】代谢组学分析系列
  6. realsense d435i标定imu与camera
  7. SV环境搭建基础知识整合①
  8. ios之实现自动无限循环滚动视图(1)
  9. BIOS开启Fast Boot后导致开机时键盘无法使用,无法进入BIOS
  10. python excel数据处理?