重庆oracle认证培训机构

新闻分类

产品分类

热门关键词

联系我们

企业名称:重庆赛烽达科技有限公司

联系人:程老师

手机:13372708242

邮箱:xqzhang@saifengda.com

网址:www.cqora.com

地址:重庆石桥铺高创锦业17-3

SGA与PGA的结构如下图

您的当前位置: 首 页 >> 新闻资讯 >> 行业新闻

SGA与PGA的结构如下图

发布日期:2021-02-12 作者: 点击:

SGA与PGA的结构如下图:

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 pool、large pool、java pool、stream 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

 

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 pool、keep pool、recycle pool对应的参数为db_cache_size、 db_keep_cache_size 、db_recycle_size分别表示缓冲区大小

 

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

 

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.设置好这两个参数后就不用关心SGA和PGA了

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%

补充:总原则:OS 使用内存+SGA+并发执行进程数*(sort_area_size+hash_ara_size+2M) < 0.7*总内存

      简单说就是:SGA+PGA+OS使用内存<总物理RAM

关于SGA、PGA与系统内存三者间的关联,目前有一个相对通用的计算规则可供参考:

对于OLTP数据库,SGA=系统内存*70%*80%,PGA=SGA*(10%~20%)。SGA=系统内存*0.56 PGA=系统内存*(0.05~0.1)

对于OLAP数据库,SGA=系统内存*80%*60%,PGA=SGA*(45%~65%)。SGA=系统内存*0.48 PGA=系统内存*(0.22~0.31)

(对于32bit平台,默认情况下SGA最大可用内存有1.7GB的限制)

实例配置时需要考虑的因素

一:物理内存多大

二:操作系统估计需要使用多少内存

三:数据库是使用文件系统还是裸设备

四:有多少并发连接

五:应用是OLTP 类型还是OLAP 类型


本文网址:http://www.cqora.com/news/770.html

关键词:oracleocp培训,oracleocp培训班,oracleocp培训学校

最近浏览:

报名咨询

点击咨询报名

赛烽达QQ群

赛烽达技术群

程老师

13372708242

加微信咨询

张老师微信.jpg

xqzhang@saifengda.com