part 1: 与shared pool相关的参数
1. shared_pool_size :该参数设置了共享池的总大小,单位是字节。
2. shared_pool_reserved_size: 该参数设定为较大对象使用的保留共享池大小。
3.shared_pool_reserved_min_alloc: 该参数设置了大对象的阀值(就是说多大才算大对象)
4.large_pool_size: 该参数设置大池的大小。大池是为了更好的管理共享池空间而设置的。在MTS模式下,PGA里的用户会话数据和游标状态被放置在大池里。
5.large_pool_min_alloc:这个参数自8.0.3版本后,已经不被使用。
6.parallel_automatic_tuning: 设置是否在并行操作时使用大池。8i及以上版本有效。
7.java_pool_size: 为java及其相关组建保留的区域。
8.session_cached_cursors: 该参数设置在会话游标缓存区里可以保留的游标数量,用以减少软解析次数,从而减轻shared pool的负担。该参数影响到会话使用的缓存数。
part2:监控共享池的使用情况
1. 查看共享池大小。
SQL> select pool,sum(bytes)/1024/1024 from v$sgastat
2 where pool='shared pool'
3 group by pool;
POOL SUM(BYTES)/1024/1024
------------ --------------------
shared pool 56.0044746
2.查看共享池剩余空间大小
SQL> select pool,bytes from v$sgastat
2 where name='free memory';
POOL BYTES
------------ ----------
shared pool 4786772
large pool 3988096
java pool 4194304
如果free memory较低,并不一定代表有问题,相反,如果free memory较大,可能意味着你设置了过大的共享池,令一个可能造成free memory过大的原因是过多的aging正在发生。可以查看视图v$shared_pool_reserved中的Request_Misses列,如果该列的数值在增加,预示着shared pool设置过小。
part3:library cache
1. 查看library cache的命中率
SQL> select namespace,gethitratio,pinhitratio
2 from v$librarycache;
NAMESPACE GETHITRATIO PINHITRATIO
--------------- ----------- -----------
SQL AREA .400499828 .903548108
TABLE/PROCEDURE .873973359 .974220699
BODY .999493776 .999374833
TRIGGER 0 0
INDEX 0 0
CLUSTER .911764706 .961643836
OBJECT 1 1
PIPE 1 1
JAVA SOURCE 1 1
JAVA RESOURCE 1 1
JAVA DATA 1 1
11 rows selected.
上述示例的gethitratio只有40%,这是由于执行了大量没有使用绑定变量的sql所致。脚本如下:
I=0
while [ $I -le 10000 ]
do
sqlplus scott/tiger<
exit;
EOF
I=$((I+1))
done
显然,每执行一次sql,不得不进行一次硬解析。
2. 查看硬结析率
SQL> select a.value total,b.value hard,a.value-b.value soft,
2 round((b.value/a.value)*100,1) hardparseperc
3 from v$sysstat a,v$sysstat b
4 where a.statistic#=330
5 and b.statistic#=331;
TOTAL HARD SOFT HARDPARSEPERC
---------- ---------- ---------- -------------
311225 23124 288101 7.4
3.可以通过查看v$db_object_cache,定位占用共享池较大空间的对象。
SQL> select name,sharable_mem
2 from v$db_object_cache
3 where type in('PACKAGE','PACKAGE BODY','FUNCTION'
4 ,'PROCEDURE');
NAME SHARABLE_MEM
------------------------------ ------------
DBMS_ADVISOR 8544
SYS$RAWTOANY 12640
STATSPACK 63610
STATSPACK 53610
PRVT_HDM 43608
STANDARD 24952
PRVT_ADVISOR 12640
DBMS_STANDARD 24929
DBMS_ADVISOR 24984
PRVT_HDM 16732
PRVT_ADVISOR 66708
NAME SHARABLE_MEM
------------------------------ ------------
STANDARD 438620
12 rows selected.
对于占用较大空间的对象,比如上例中的STANDARD,就可以将其keep在
shared_pool_reserved中。
part 4:Data Dictionary Cache
数据字典缓冲区是用来保存数据字典的递归sql,可以通过如下sql查询命中率:
SQL> select to_char(round((1-sum(Getmisses)/sum(gets))*100,1))||'%' "Hit Ratio"
2 from v$rowcache;
Hit Ratio
-----------------------------------------
98.2%
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10972173/viewspace-265143/ ,如需转载,请注明出处,否则将追究法律责任。