注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

一路奔跑

奔跑着一路向前...

 
 
 

日志

 
 

oracle实例内存(SGA和PGA)调整 续3  

2012-10-10 15:46:37|  分类: Oracle书架 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

SGA:

查看SGA

Sqlp> show sga

select * from v$sga;

Total System Global Area  289406976 bytes

Fixed Size                  1248600 bytes

Variable Size             176161448 bytes

Database Buffers          109051904 bytes

Redo Buffers                2945024 bytes

 

Fixed Size:包括了数据库与实例的控制信息、状态信息、字典信息等,启动时就被固定在SGA中,不会改变。

Variable Size:包括了shard poollarge pooljava poolstream pool、游标区和其他结构

Database Buffers:数据库中数据块缓冲的地方,是SGA中最大的地方,决定数据库性能

Redo Buffers:提供REDO缓冲的地方,在OLAP中不需要太大

 

V$sgastat记录了SGA的一些统计信息

V$sga_dynamic_components 保存SGA中可以手动调整的区域的一些调整记录

 

Shard pool:

Shard_pool_size决定其大小,10g以后 自动管理

Shard_pool中数据字典和控制区结构用户无法直接控制,与用户有关的只有sql缓冲区(library cache)。

经常访问的过程或包用DBMS_SHARED_POOL.KEEP存储过程将该包pin在共享池中。

手工清除共享池的内容:alter system flush shard_pool;

 

共享池相关的几个常用的视图:

V$sqlarea 记录了所有sql的统计信息,包括执行次数、物理读、逻辑读、耗费时间等

V$sqltext_with_newline 完全显示sql语句,通过hash_value来标示语句,piece排序

V$sql_plan保存了sql的执行计划,通过工具查看

V$shared_pool_advice 对共享池的预测,可以做调整SGA的参考

 

Data buffer

 

OLTP系统中要求data buffer 的命中率在95%以上

select sum(pins) "execution",sum(pinhits) "hits",

((sum(pinhits)/sum(pins))*100) "pinhitration",

sum(reloads) "misses",((sum(pins)/(sum(pins)

+sum(reloads)))*100) "relhitratio"

from V$librarycache

 

计算命中率的语句

select round((1 - (physical.value - direct.value - lobs.value)/logical.value)*100,2) "Buffer Cache Hit Ratio"

from v$sysstat physical,v$sysstat direct,v$sysstat lobs,v$sysstat logical

where physical.name ='physical reads'

  and direct.name ='physical reads direct'

  and lobs.name ='physical reads direct (lob)'

  and logical.name ='session logical reads';

 

 

PINS NUMBER Number of times a PIN was requested for objects of this namespace

PINHITS NUMBER Number of times all of the metadata pieces of the library object were found in memory

RELOADS NUMBER Any PIN of an object that is not the first PIN performed since the object handle was created, and which requires loading the object from disk

 

Oracle把从data buffer中获得的数据库叫cache hit,把从磁盘获得的脚cache miss

数据缓冲 区中的数据块通过脏列表(dirty list)和LRU列表(LRU list)来管理。

 

Data buffer可细分为:default poolkeep poolrecycle pool对应的参数为db_cache_size db_keep_cache_size db_recycle_size分别表示缓冲区大小

 

9i开始oracle支持不同块大小的 表空间,相应的可以为不同块大小的表空间指定不同块大小的数据缓冲区,不同块大小的数据缓冲区可以用相应的db_nk_cache_size来指定,其中 n可以是2461632

 

V$db_cache_advice 对数据缓冲区的预测,可以做调整data buffer的参考

 

V$bh x$bh记录了数据块在data buffer中缓冲的情况,通过这个视图可以找系统中的热点块。

通过下面语句找系统中top 10 热点快所在的热点对象:

 

Select /*+ rule*/ owner,object_name from dba_objects

Where data_object_id in

(select obj from

(select obj from x$bh order by tch desc)

Where rownum<11);

 

PGA

用来保存于用户进程相 关的内存段。

9i开始使用PGA自动管理,pga_aggregate_target参数指定session一共使用的最大PGA内存的上限。 Workarea_size_policy参数用于开关PGA内存自动管理功能,auto/manual

 

OLTP环境中,自动PGA 管理只要设置到一定的值,如2G左右就能满足系统的要求。

 

自动内存管理:

9i开始,sga_max_size参数设置SGA 的内存大小,不能动态修改

 

10g开始,指定了sga_target参数后,所有的SGA组件如:shared pool data buffer large pool都不用手工指定了,Oracle会自动管理。这一特性就是自动共享内存管理ASMM。如果设置了sga_target=0,就自动关闭自动共享内 存管理功能。Sga_target大小不能超过sga_max_size的大小。

手动管理SGA

Alter system set sga_target=2000m;

Alter system set db_cache_size=1000m;

Alter system set shared_pool=200m;

Alter system set sga_target=0---------关闭自动共享内存管理ASMM

 

11G以后sga+pga整个内存可以自动管理AMM,相关 参数memory_max_target  memory_target.设置好这两个参数后就不用关心SGAPGA

11g手动内存管理:

Alter system set memory_target=3000m;

Alter system set sga_target=2000m;

Alter system set pga_aggregate_target=1000m;

Alter system set memory_target=0;---------关闭自动内存管理AMM

 

SGA+PGA最好不要超过总内存的70%

  评论这张
 
阅读(268)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018