当前位置:数据库 > Oracle >>

Oracle数据库System Global Area(SGA)的理解

Oracle数据库System Global Area(SGA)的理解
 
1 概述
  www.zzzyk.com  
  Oracle SGA区的监控和管理,是数据库日常维护的重要内容。本文详细介绍SGA的基本概念,SGA运行情况检查,以及SGA的参数设置原则,希望对大家的有所帮助。
 
  2 SGA的基本概念
 
  当启动Oracle数据库时,系统会先在内存内规划一个固定区域,用来储存用户需要的数据,以及Oracle运行时必备的系统信息。我们称此区域为系统全局区(System Global Area),简称SGA。
  www.zzzyk.com  
  SGA 包含数个重要区域,分别是:
 
  ■ Database Buffer Cache (数据库缓冲区)
 
  ■ Redo Log Buffer (重做日志缓冲区)
 
  ■ Shared Pool (共享区)
 
  ■ 其它,如Java pool, Large pool
 
  2.1 Database Buffer Cache (数据库缓冲区)
 
  数据库缓冲区的作用主要是在内存中缓存从数据库中读取的数据块。数据库缓冲区越大,为用户已经在内存里的共享数据提供的内存就越大,这样可以减少所需要的磁盘物理读。
 
  在9i以前数据库缓冲区的大小是由db_block_buffers*db_block_size 来决定大小的。db_block_size参数是在创建数据库时设置的,OLTP系统的db_block_size一般设置为8k。
 
  在9i中,数据库缓冲区的大小由db_cache_size决定,8i中的db_block_buffers被取消。db_cache_size的单位是字节,它直接决定了数据库缓冲区的大小,而不再是块的数量。
 
  2.2 Shared Pool (共享区)
 
  共享区由三部分组成,分别是Dictionary cache(包括数据字典的定义,如表结构、权限等),Library cache(包括共享的sql游标,sql原代码以及执行计划、存储过程和会话信息)和Control structure。它的大小由初始化参数shared_pool_size控制,它的作用是缓存已经被解析过的SQL,使其能被重用,不用再解析。SQL的解析非常消耗CPU的资源,如果一条SQL在Shared pool中已经存在,则进行的仅是软解析(在Shared pool中寻找相同SQL),这将大大提高数据库的运行效率。当然,这部分内存也并非越大越好,太大的Shared pool,oracle为了维护共享结构,将付出更大的管理开销。建议在150M-500M之间。如果系统内存为1G,该值可设为150M-200M;如果为2G,该值设为250M-300M;每增加1G内存,该值增加100M;但该值最大不应超过500M。
 
  2.3 Redo Log Buffer (重做日志缓冲区)
 
  Log_buffer是重做日志缓冲区,对数据库的任何修改都按顺序被记录在该缓冲,然后由LGWR 进程将它写入磁盘。LGWR的写入条件是:用户提交、有1/3 重做日志缓冲区未被写入磁盘、有大于1M 重做日志缓冲区未被写入磁盘、超时、DBWR需要写入的数据的SCN 号大于LGWR 记录的SCN 号,DBWR 触发LGWR写入。
 
  从中可以看出,大于1M的log buffer值意义并不大。重做日志缓冲区的大小由初始化参数log_buffer设定。
 
2.4 Large pool和Java pool
 
  Large pool:用于MTS、并行查询和RMAN。如果使用了MTS或RMAN,large_pool特别有用,它可以降低用户对share pool的争用。
 
  如果应用系统不使用MTS,也不使用RMAN,large_pool_size的大小可设为1M。
 
  Java pool:Oracle8I以后,oracle数据库内置了对java的支持,如果数据库安装时选择了JServer组件,则这个值可以设置为20M-30M之间。可以查询v$option动态视图,如果java那一项值为true,则表示安装了JServer,为false,表示未安装。
 
  如果应用系统不使用PORTAL,APPS,也不使用RMAN,Java pool值的大小可设为1M。如果系统需要安装补丁,建议先把Java pool值的大小临时增加到50-150M。
 
  3 SGA运行情况检查
 
  3.1 SGA整体检查
 
  对于SGA部分,我们通过sqlplus查询:
 
 
SQL> show sga   
  Total System Global Area 316899848 bytes  
  
  Fixed Size 741896 bytes  
  
  Variable Size 150994944 bytes  
  
  Database Buffers 163840000 bytes  
  
  Redo Buffers 1323008 bytes  
 
或者
 
 
SQL> select * from v$sga;   
  NAME VALUE  
  
  -------------------- ----------  
  
  Fixed Size 741896  
  
  Variable Size 150994944  
  
  Database Buffers 163840000  
  
  Redo Buffers 1323008  
 
Show sga的结果和SGA的初始化参数配置并不是完全一一对应的,下面是每一个部分的具体解释:
 
  Fixed Size
 
  oracle 的不同平台和不同版本下可能不一样,但对于确定环境是一个固定的值,里面存储了SGA各部分组件的信息,可以看作引导建立SGA的区域。
 
  Variable Size
 
  包含了shared_pool_size、java_pool_size、large_pool_size等内存设置和用于管理数据缓冲区等内存结构的hash table、块头信息等。
 
     Database Buffers
 
  指数据缓冲区,在8i中包含default pool、buffer_pool_keep、buffer_pool_recycle三部分内存。在9i中包含db_cache_size、db_keep_cache_size、db_recycle_cache_size、db_nk_cache_size。这里要注意在8i中三部分内存总和为db_block_buffers*db_block_size。
 
  Redo Buffers
 
  指重做日志缓冲区的实际大小,和log_buffer的值可能稍有不同。
 
  3.2 Data buffer 命中率检查
 
检查语句:
 
 
SQL>select 1 - (phy.value / (cur.value + con.value)) "HIT RATIO"   
  from v$sysstat cur, v$sysstat con, v$sysstat phy where cur.name = 'db block gets'  
  
  and con.name = 'consistent gets'  
  
  and phy.name = 'physical reads';  
 
调整原则:
 
  命中率不应该低于90%.
 
  如果该值过低,应该调高初始化参数。8i调整db_block_buffer,9i调整db_cache_size。
 
  3.3 Dictionary cache命中率检查
 
  检查语句:
 
SQL>SELECT 1 - (SUM(getmisses)/SUM(gets)) "Data Dictionary Hit Ratio" FROM v$rowcache; 
调整原则:
 
  命中率不应该低于95%.
 
  如果该值过低,应调高shared_pool_size的大小。
 
  3.4 Library cache命中率检查
 
  检查语句:
 
SQL>SELECT 1-(SUM(reloads)/SUM(pins)) "Library cache Hit Ratio" FROM v$librarycache;  
调整原则:
 
  命中率不应该低于99%.
 
  如果该值过低,应调高shared_pool_size的大小。
 
3.5 Log buffer命中率检查
 
检查语句:
 
 
SQL>select (req.value*5000)/entries.value "Ratio"   
  from v$sysstat req, v$sysstat entries  
  
  where req.name = 'redo log space requests'  
  
  and entries.name = 'redo entries';  
 
调整原则:
 
  命中率不应该高于1.
 
  如果该值过高,应调高log_buffer的大小。
 
  4 SGA 的参数设置原则
 
  在 Oracle8i 时,SGA 的大小是由初始化参数文件内的某些参数所设定,最麻烦的是每次调整参数之后必须等重新激活数据库才生效。从Oracle9i 开始,DBA 可以动态
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,