Oracle数据库内存监控及意义|Oracle优化 Oracle Oracle内存 TTTBLOG
Title 10340 Reply 3 Coin 0 Score 0
entry : 2009-09-01 18:13:31
update: 2009-09-01 18:13:31
show: 5332
#0. (Normal)

  ORACLE的数据库所占用的内存区域被称为SGA,它主要由三部分组成,第一部分是DATA BUFFER,第二部分是LOG BUFFER,第三部分是SHARED POOL。

  DATA BUFFER中存放的是常用的ORACLE数据块,当ORACLE中的某个事务要对某些数据进行查询或修改时,ORACLE会首先在DATA BUFFER中寻找该数据块,若能找到,则操作直接在内存中进行,不需要物理读操作,这样可以提高系统性能。对于DATA BUFFER的管理而言,最重要的一个指标就是它的命中率,如果命中率大于95%,则说明绝大多数数据都可以直接在内存中访问到,系统的性能尚可,若此值小于95%,则需增大DATA BUFFER的空间。

  LOG BUFFER中存放的是ORACLE的REDO LOG信息,这些信息在满足一定的条件时由ORACLE后台进程LGWR写入到物理的REDO LOG文件中。如果LOG BUFFER的空间太小,而CPU较快,硬盘较慢,则在事务处理繁忙时,有可能会造成当LOG BUFFER还没有完全写入REDO LOG时,LOG BUFFER已全部占满的情况。此时正在被处理的事务只能等待系统将LOG BUFFER完全写入文件后才能继续,这样一来,系统的性能将受到影响。对于LOG BUFFER的管理而言,最重要的一个指标就看是它的REDO LOG SPACE REQUEST与REDO ENTRIES的比率,如果此数值小于1/5000,则说明系统的性能尚可,若此值大于1/5000,则需增大LOG BUFFER的空间。

  SHARED POOL主要由两部分组成,其一为DICTIONARY CACHE,其二为LIBRARY CACHE。

  DICTIONARY CACHE在内存中存放ORACLE数据库中常用的数据字典的信息,若此区域太小,当ORACLE需要某些数据字典信息,如对某用户的权限设置等信息时,如果该信息不能在DICTIONARY CACHE中找到,则必须先通过物理读从ORACLE数据库的数据文件中得到该信息,然后再将该内存区域的部分信息替换出去。如此反复,将大大影响系统的性能。对于DICTIONARY CACHE的管理而言,最重要的一个指标就是它的命中率,如果命中率大于95%,则说明绝大多数数据字典信息都可以直接在内存中访问到,系统的性能尚可,若此值小于95%,则需增大SHARED POOL的空间,从而间接增大DICTIONARY CACHE的空间。

  LIBRARY CACHE在内存中存放经语法分析后的、可执行的SQL CURSOR的信息和编译后的PL/SQL的程序等。当用户向ORACLE发出一个SQL命令后,ORACLE首先利用其内部的HASH函数将此SQL语句的文本映射成一个LIBRARY CACHE中的地址,检查在该地址是否有已经过语法分析后的、可执行的与该SQL语句对应的SQL CURSOR的信息,如果没有,则ORACLE将该SQL语句经语法分析后的结果存放在此,这样一来,下一条与此完全一致的SQL语句将不必再次进行语法分析。ORACLE数据库通过这样的机制来提高系统性能。但如果LIBRARY CACHE太小,当用户下一条完全一致的SQL语句键入时,原SQL语句经语法分析后的结果已被替换出去,在这样的情况下,系统的性能将大受影响。因此对于LIBRARY CACHE的管理而言,最重要的一个指标就是它的命中率,如果命中率大于95%,则说明绝大多数可执行信息都可以直接在内存中访问到,不必再次经过语法分析和编译,系统的性能尚可,若此值小于95%,则需增大SHARED POOL的空间,从而间接增大LIBRARY CACHE的空间。

  r      目标
  监控数据库的内存使用效率,以确定数据库的使用是否存在严重的内存配置问题。
  r      常用的扫描类型
  BCHRATIO:此扫描类型显示DATA BUFFER的命中率,通常情况下,该数值不应小于95%。
  DATABASE SLOTS – REDO LOGS:此扫描类型显示关于LOG BUFFER的信息。
  LIBRARY CACHE – PIN HIT RATIO:此扫描类型显示关于LIBRARY CACHE的命中率。
  DICTIONARY CACHE – HIT RATIO:此扫描类型显示关于DICTIONARY CACHE的命中率。

 表格1. 与内存监控有关的扫描类型

Scan Group
Scan Type
Description
Dictionary Cache Info
Hit Ratio
数据字典缓冲区命中率。当命中率较低且系统事务繁忙时,应适当加大init/*$ORACLE_SID*/.ora文件中的SHARE_POOL_SIZE参数
Pin Hit Ratio
对Library Cache 发出pin请求的命中率,通常,如果pin 的命中率小于95%,适当增大init/*$ORACLE_SID*/.ora文件中SHARED_POOL_SIZE参数
Request Hit Ratio
对Library Cache 发出get请求的命中率,通常,如果pin 的命中率小于95%,适当增大init/*$ORACLE_SID*/.ora文件中SHARED_POOL_SIZE参数
I/O Performance Info
Buffer Cache Hit Ratio
数据缓冲区命中率。如果该命中率经常低于95%,则需要增加init/*$ORACLE_SID*/.ora文件中的db_block_buffers参数
Individual Scan Types
SGA
SGA区中每一个部分的大小
Latch Contention Pct.
Latch请求超时的比率

r   常用的报警类型

表格2. 与内存监控有关部门的报警类型

Related Event
Performance Workspace
Scan Group
Scan Type
Description
Hit Ratio
AL_hitratio.wsv
I/O Performance Info Group
Buffer Cache Hit Ratio
如果 buffer cache命中率低于阈值,引发报警。此报警可以用于检查是否Buffer Cache过小。
SgaFreememLow
AL_SgaFreeMemLow.wsv
Individual Scan Types
SGA Status
如果SGA memory 百分比少于阈值,触发报警。

【版权声明】
本文为原创,遵循CC 4.0 BY-SA版权协议!转载请附上原文出处链接及本声明。
原文链接:https://tdlib.com/am.php?t=0aA7VSrRXEn8

Tag:   Oracle优化   Oracle   Oracle内存   TTTBLOG
分享链接:
3回复
Allen 2009-09-01 20:01:00   
| 274 | 蛋王 | 2009-09-01 20:01:00 | [email protected] | http://gunegg.com |
-----
太专业,纯顶了。。。 最近是不是feedsky被和谐了啊?rss点原文都过不来。。
Allen 2009-09-01 20:20:19   
| 275 | zwwooooo | 2009-09-01 20:20:19 | [email protected] | http://zww.me |
-----
不懂就坐沙发!
Allen 2009-09-01 20:23:29   
| 276 | zwwooooo | 2009-09-01 20:23:29 | [email protected] | http://zww.me |
-----
搞错,是板凳………………没学过ORACLE,以前学过那个fox和PowerBuilder啥的,全忘了,忘得一干二净。n年后帮助用最简单的access编了个房屋出租管理……现在我就是一个普通的电脑用户而已……[REVERT=taoether 于 2009-9-1 22:28:27 回复]我也是转过来参考一下~~ 也不太明白~~[F]Haha[/F][/REVERT]
未登录,请先 [注册] or [登录]
(一分钟即可完成注册!)