关于SGA的常用动态性能视图
V$sgainfo
用于展现SGA的信息,包括不同SGA组件的大小,粒度,与空闲内存。
SQL> desc v$sgainfo
Name Null? Type
----------------------------------------- -------- ----------------------------
NAME VARCHAR2(32)
BYTES NUMBER
RESIZEABLE VARCHAR2(3)
name:SGA统计值的名称
bytes:SGA统计值大小,单位bytes
resizeable:统计值是否可以调整YES or NO
V$sgastat
用于展现SGA的详细信息
SQL> desc v$sgastat
Name Null? Type
----------------------------------------- -------- ----------------------------
POOL VARCHAR2(12)
NAME VARCHAR2(26)
BYTES NUMBER
pool:name所在的池
name:SGA组件名称
bytes:内存大小,单位bytes
v$sga_target_advice
用于展现对sga_target初始化参数的建议信息
SQL> desc v$sga_target_advice
Name Null? Type
----------------------------------------- -------- ----------------------------
SGA_SIZE NUMBER
SGA_SIZE_FACTOR NUMBER
ESTD_DB_TIME NUMBER
ESTD_DB_TIME_FACTOR NUMBER
ESTD_PHYSICAL_READS NUMBER
SGA_SIZE:SGA大小
SGA_SIZE_FACTOR:SGA_SIZE与当前SGA大小的比值
ESTD_DB_TIME :预估的DB time
ESTD_DB_TIME_FACTOR:预估的DB time 与当前DB time的比值
ESTD_PHYSICAL_READS:预估的物理读
DB time: It is calculated by aggregating the CPU and wait times of all sessions not waiting
on idle wait events (non-idle user sessions). DB time is measured cumulatively from the time
that the instance was started.
如果SGA内存管理没有使用AMM特性,不会生成该视图。
########################################################################################
下面对v$db_cache_advice的相关查询与对V$shared_pool_advice不是在同一个数据库中查询的结果
这里把他们放在一起,整合为一个关于SGA内存视图的博文。
从oracle9i版本开始,oracle引进了多个缓冲区内存设置相关的建议视图。
oracle根据系统运行过程中收集到的统计信息,及一些复杂的数据模型,预
估出不同大小的缓冲区设置时缓冲区中的表现。预估的效果可能与实际情况
有所偏差。
v$db_cache_advice是关于数据缓冲区设置的建议视图,预估的缓冲区的值的
范围从当前数据缓冲区值得10%~200%之间。
SQL> desc v$db_cache_advice;
Name Type Nullable Default Comments
----------------------------- ------------ -------- ------- --------
ID NUMBER Y
NAME VARCHAR2(20) Y
BLOCK_SIZE NUMBER Y
ADVICE_STATUS VARCHAR2(3) Y
SIZE_FOR_ESTIMATE NUMBER Y
SIZE_FACTOR NUMBER Y
BUFFERS_FOR_ESTIMATE NUMBER Y
ESTD_PHYSICAL_READ_FACTOR NUMBER Y
ESTD_PHYSICAL_READS NUMBER Y
ESTD_PHYSICAL_READ_TIME NUMBER Y
ESTD_PCT_OF_DB_TIME_FOR_READS NUMBER Y
ESTD_CLUSTER_READS NUMBER Y
ESTD_CLUSTER_READ_TIME NUMBER Y
查看视图结构
列含义解释:
ID 值的范围为1~8,其中前6个编号对于db_nk_cache_size,7对于ddb_keep_cache_size,8对应db_recycle_cache_size。
NAME 缓冲池名称,default,keep,recycle等,如果没有设置keep,recycle池该视图中不会存在相应的记录。
BLOCK_SIZE 块大小
ADVICE_STATUS 对应初始化参数db_cache_advice
SIZE_FOR_ESTIMATE 预估的数据缓冲区的大小,单位M
SIZE_FACTOR SIZE_FOR_ESTIMATE与当前数据缓冲区大小的比值
BUFFERS_FOR_ESTIMATE 预估的数据缓冲区大小,以块为单位
ESTD_PHYSICAL_READ_FACTOR 当缓冲区设置为SIZE_FOR_ESTIMATE时,预估的物理读与当前的物理读的比值,如果当前的物理读为0,该值为空
ESTD_PHYSICAL_READS 当缓冲区设置为SIZE_FOR_ESTIMATE时,预估的物理读
ESTD_PHYSICAL_READ_TIME 响应时间
ESTD_PCT_OF_DB_TIME_FOR_READS 物理读消耗的时间的百分比
ESTD_CLUSTER_READS 读取的数据块总数,仅RAC环境有效
ESTD_CLUSTER_READ_TIME 读取花费的时间,仅对RAC环境有效
下面查询default池的建议信息:
SQL> select size_for_estimate,size_factor,estd_physical_read_factor,estd_physical_reads
2 from V$db_Cache_Advice
3 where name = 'DEFAULT';
SIZE_FOR_ESTIMATE SIZE_FACTOR ESTD_PHYSICAL_READ_FACTOR ESTD_PHYSICAL_READS
----------------- ----------- ------------------------- -------------------
16 0.1 1.9942 37301
32 0.2 1.5334 28682
48 0.3 1.3367 25003
64 0.4 1.1974 22397
80 0.5 1.1248 21040
96 0.6 1.0871 20334
112 0.7 1.0443 19533
128 0.8 1.0102 18895
144 0.9 1.0029 18759
160 1 1 18705
176 1.1 1 18705
192 1.2 1 18705
208 1.3 1 18705
224 1.4 1 18705
240 1.5 1 18705
256 1.6 1 18705
272 1.7 1 18705
288 1.8 1 18705
304 1.9 1 18705
320 2 1 18705
当前设置的默认池大小为160mb,从查询结果来看,设置的是比较合适的。
衡量数据缓冲区设置是否合适的一个重要指标是:缓冲区命中率
SQL> select 1-sum(decode(name,'physical reads',value,0))/
2 (sum(decode(name,'db block gets',value,0))+
3 sum(decode(name,'consistent gets',value,0))) "Buffer cache hit ratio"
4 from v$sysstat;
Buffer cache hit ratio
----------------------
0.981732159175874
当该值低于95%的时候DBA需要注意是否数据缓冲区不足。数据缓冲区的命中率受很多因素影响,
并不能说缓冲区命中率低就说明数据库的数据缓冲区不足对于OLAP数据库(经常需要大量读取数据)
应该根据其业务特点进行分析。可以考虑增大数据缓冲区,设置多缓冲区(keep,recycle缓冲区。)
#############################################################################################
V$shared_pool_advice
用于预估不同共享池大小时,解析时间的不同。
SQL> desc V$shared_pool_advice
Name Null? Type
----------------------------------------- -------- ----------------------------
SHARED_POOL_SIZE_FOR_ESTIMATE NUMBER
SHARED_POOL_SIZE_FACTOR NUMBER
ESTD_LC_SIZE NUMBER
ESTD_LC_MEMORY_OBJECTS NUMBER
ESTD_LC_TIME_SAVED NUMBER
ESTD_LC_TIME_SAVED_FACTOR NUMBER
ESTD_LC_LOAD_TIME NUMBER
ESTD_LC_LOAD_TIME_FACTOR NUMBER
ESTD_LC_MEMORY_OBJECT_HITS NUMBER
SHARED_POOL_SIZE_FOR_ESTIMATE:预估的共享池大小,单位M
SHARED_POOL_SIZE_FACTOR:预估的共享池大小与当前共享池大小的比值
ESTD_LC_SIZE:预估的共享池中用于库缓存的大小,单位M
ESTD_LC_MEMORY_OBJECTS:预估的共享池大小下库缓存中的对象数
ESTD_LC_TIME_SAVED:因为库缓存对象,可以节省的解析时间
ESTD_LC_TIME_SAVED_FACTOR:ESTD_LC_TIME_SAVED与当前共享池所需花费的解析时间的比值
ESTD_LC_LOAD_TIME:使用预估的共享池大小时,解析对象所花费的时间
ESTD_LC_LOAD_TIME_FACTOR:ESTD_LC_LOAD_TIME与当前共享池大小解析时间的比值
ESTD_LC_MEMORY_OBJECT_HITS:预估的共享池大小时,共享池中对象的命中次数。
SQL> select shared_pool_size_for_estimate,shared_pool_size_factor,estd_lc_size,estd_lc_time_saved_factor,
estd_lc_load_time_factor,estd_lc_memory_object_hits
from v$shared_pool_advice;
2 3
SHARED_POOL_SIZE_FOR_ESTIMATE SHARED_POOL_SIZE_FACTOR ESTD_LC_SIZE ESTD_LC_TIME_SAVED_FACTOR ESTD_LC_LOAD_TIME_FACTOR ESTD_LC_MEMORY_OBJECT_HITS
----------------------------- ----------------------- ------------ ------------------------- ------------------------ --------------------------
80 .8696 2 .9952 1.16 6342
92 1 14 1 1 29666
104 1.1304 26 1.0181 .4 30411
116 1.2609 36 1.0193 .36 30467
128 1.3913 40 1.0193 .36 30472
140 1.5217 40 1.0193 .36 30472
152 1.6522 40 1.0193 .36 30472
164 1.7826 40 1.0193 .36 30472
176 1.913 40 1.0193 .36 30472
188 2.0435 40 1.0193 .36 30472
从上面的查询可以看出当前共享池的大小设置为92MB,如果还有空闲内存可以把共享池大小调整到128MB,根据建议视图这样比较合适,性能会有所提高。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26110315/viewspace-715752/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/26110315/viewspace-715752/