1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 数据库 - 正文

君子好学,自强不息!

之前我们介绍了:Oracle 10g内存结构之系统全局区简介,本文我们接着介绍一下Oracle 10g内存结构之共享池的相关知识,接下来就让我们一起来了解一下这部分内容吧。

SGA中的第三个组成部分是共享池。共享池是对sql ,pl/sql 程序进行语法分析、编译、执行的内存区域。共享池包括库缓冲区(library cache)、数据字典缓冲区(Data Directory Cache)用户全局区(User Global Area)。其中库缓冲区含有Sql 语句的分析码、执行计划;数据字典缓冲区含有从数据字典中得到的表、列定义、权限。用户全局区包含用户的MTS 会话信息。

共享池主要用于对SQL 、pl/sql 程序语句进行语法分析、编译、执行、所以,如果应用中药运行大量存储过程或包,则要增加共享池的尺寸。共享池的大小由参数SHARE_POOL_SIZE确定。要了解共享池大小,可以用以下方法:

方法一:

……… 
Shared_Pool_size=52428800
…..

方法二:

SQL>selectname,valuefromv$parameterwherenamelike‘%size’;

方法三:

SQL>showparametershare_pool_size

共享池应计算存储过程、包等的成功率。

可以查询数据字典 v$rowcache 了解数据字典的成功与失败次数。

SQL>selectsum(gets)“dictionarygets”, 
Sum(getmisses)“dictionarycachegetmisses” 
Fromv$rowcache;

其中gets 表示读取某一类数据字典的成功次数,getsmisses 表示读取某一类数据字典的失败次数。此外还可以通过查询结果计算共享池中读取数据字典的成功率

SQL>selectparameter,get,getmisses,getmisses/(getmisses+gets)*100“missratio”, 
(1-(sum(getmisses)/(sum(getmisses)+sum(gets))))*100“hitratio” 
Fromv$rowcache 
Wheregets+getmisses<>0 
Groupbyparameter,gets,getmisses;

查询数据字典 v$librarycache 可以计算共享池中库缓存的失败率,结果应该小于1%。

SQL>selectsum(pins)“totalpins”,sum(reloads)“totalreloads”,sum(reloads)/sum(pins)*100libarycachefromv$librarycache;

其中 total pins 表示驻留内存的次数, total reloads 表示重新加载到内存的次数,librarycache 表示失败率。

上面分析了系统全局区的三个组成部分—–数据缓冲区、日志缓冲区及共享池,如果要得到SGA的总大小,可以在SQL*Plus中使用show sga 命令。

SQL>show sga或查询数据字典

SQL> select * from v$sga;

如果要查询某个参数的大小,可以查询数据字典v_$sagstat,通过计算可以知道sga的使用空间与空闲空间的比。

SQL>colOBJECT_NAMEformata20 
SQL>col空闲空间百分比(%)format90.99 
SQL>selectname, 
Sgasize/1024/1024“allocated(M)”, 
Bytes/1024“空闲空间(k)”, 
Round(bytes/sagsize*100,2)“空闲空间百分比(%)” 
From(selectsum(bytes)sgasizefromsys.v_$sgastat)s,sys.v_$sgastatf 
Wheref.name=’freememory’;

本文来源:1818IP

本文地址:https://www.1818ip.com/post/10654.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。