x$ KSMSP视图(引用)

来源:互联网 发布:搭建数据库服务器 编辑:程序博客网 时间:2024/06/03 17:30

原文转自:http://www.eygle.com/archives/2005/01/oracleaexiieaee_1.html

引用地址:http://blog.csdn.net/changyanmanman/article/details/7482763           http://blog.csdn.net/changyanmanman/article/details/7611758

1、X$KSMSP的名称含义
[K]ernal  [S]torage  [M]emory  Management   [S]GA   Hea[P]

其中每一行都代表着shared pool中的一个chunk

我们看一下x$ksmsp的结构:

SQL> desc x$ksmsp Name              Null?    Type ---------       -------- ---------------- ADDR                       RAW(4) INDX                       NUMBER INST_ID                    NUMBER KSMCHIDX                   NUMBER KSMCHDUR                   NUMBER KSMCHCOM                   VARCHAR2(16) KSMCHPTR                   RAW(4) KSMCHSIZ                   NUMBER KSMCHCLS                   VARCHAR2(8) KSMCHTYP                   NUMBER KSMCHPAR                   RAW(4)

我们关注以下几个字段:

KSMCHCOM 是注释字段,每个内存块被分配以后,注释会添加在该字段中.
x$ksmsp.ksmchsiz代表块大小

x$ksmsp.ksmchcls列代表类型,主要有四类,说明如下:

free
Free chunks--不包含任何对象的chunk,可以不受限制的被分配.

recr
Recreatable chunks--包含可以被临时移出内存的对象,在需要的时候,这个对象可以
被重新创建.例如,许多存储共享sql代码的内存都是可以重建的.

freeabl
Freeable chunks--包含session周期或调用的对象,随后可以被释放.这部分内存有时候
可以全部或部分提前释放.但是注意,由于某些对象是中间过程产生的,这些对象不能
临时被移出内存(因为不可重建).

perm
Permanent memory chunks--包含永久对象.通常不能独立释放.

我们可以通过查询x$ksmsp视图来考察shared pool中存在的内存片的数量
不过注意:Oracle的某些版本(如:10.1.0.2)在某些平台上(如:HP-UX PA-RISC 64-bit)查
询该视图可能导致过度的CPU耗用,这是由于bug引起的.


在以前的一篇文章中,我介绍过x$ksmsp的一些知识。(http://www.eygle.com/archives/2007/09/shared_pool_reserved_ksmspr.html)

在x$ksmsp.ksmchcls的分类中,还有两外几个分类,这几个分类是R-free/R-freea/R-perm:

Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning option
JServer Release 9.2.0.4.0 - Production
SQL> select count(*) from x$ksmsp;
  COUNT(*)
----------
     37138
可以知道shared pool里面有chuck数量是:37138


SQL> select KSMCHCLS,sum(KSMCHSIZ) from x$ksmsp  group by ksmchcls; 
KSMCHCLS   SUM(KSMCHSIZ)--------   -------------R-free        24836016R-freea       1946032R-perm        1904160free          32459264freeabl       294999744perm          70090848recr          1441871047 rows selected.
各个版本都不一样,我在10g r1中查询结果如下:

SQL> select KSMCHCLS,sum(KSMCHSIZ) FROM x$ksmsp group by ksmchcls;

KSMCHCLS       SUM(KSMCHSIZ)--------       -------------R-free          4258000R-freea         960free            11377688freeabl         24806588perm            32652096recr            10789868
已选择6行。

没有R-perm 类型的。

在10g r2中的结果如下:

SQL> select KSMCHCLS,sum(KSMCHSIZ) FROM x$ksmsp group by ksmchcls;

KSMCHCLS      SUM(KSMCHSIZ)--------        -------------freeabl          8269108recr             13469740R-freea          36688perm             43004308no acce          4128848R-free           3370288free             3217484

7 rows selected.

这里的R指的是reserved,也就是说这些Heap的信息是和shared_pool_reserved_size相关的。
至于free/freeable/perm就无需解释了


2、V$SHARED_POOL_RESERVED

shared_pool_reserved_size的另外一个视图展现是V$SHARED_POOL_RESERVED.
我们可以从这个视图中获得关于shared pool reserverd的信息:

SQL> desc v$shared_pool_reserved

 名称                        是否为空?        类型 ----------------------       --------     -------------- FREE_SPACE                                    NUMBER AVG_FREE_SIZE                                 NUMBER FREE_COUNT                                    NUMBER MAX_FREE_SIZE                                 NUMBER USED_SPACE                                    NUMBER AVG_USED_SIZE                                 NUMBER USED_COUNT                                    NUMBER MAX_USED_SIZE                                 NUMBER REQUESTS                                      NUMBER REQUEST_MISSES                                NUMBER LAST_MISS_SIZE                                NUMBER MAX_MISS_SIZE                                 NUMBER REQUEST_FAILURES                              NUMBER LAST_FAILURE_SIZE                             NUMBER ABORTED_REQUEST_THRESHOLD                     NUMBER ABORTED_REQUESTS                              NUMBER LAST_ABORTED_SIZE                             NUMBER

查询总共有几条记录:

SQL> select count(*) from v$shared_pool_reserved ;
  COUNT(*)
----------
         1
SQL> select *from v$shared_pool_reserved;


FREE_SPACE    AVG_FREE_SIZE    FREE_COUNT   MAX_FREE_SIZE    USED_SPACE       AVG_USED_SIZE     USED_COUNT          MAX_USED_SIZE      REQUEST ----------    -------------    ----------    -------------   ----------      -------------      ----------           -------------   ------------      4258000        212900            20            212900            0                  0               0                     0                0 REQUEST_MISSES    LAST_MISS_SIZE       MAX_MISS_SIZE     REQUEST_FAILURES         LAST_FAILURE_SIZE         ABORTED_REQUEST_THRESHOLD --------------    --------------       -------------     ---------------           -----------------      ----------------------------------------      0               0                      0                  0                         0                         4.2950E+10          ABORTED_REQUEST         LAST_ABORTED_SIZE----------------       -------------------------     0                          0


关于这些信息的另外一个来源是X$KSMSPR内部表:
SQL> select   ksmchcom,ksmchcls,sum(ksmchsiz)     from x$ksmspr group by ksmchcom,ksmchcls;
KSMCHCOM           KSMCHCLS        SUM(KSMCHSIZ)----------------   --------      -------------ksfqpar          R-freea          328616free memory      R-free           25216256PL/SQL MPCODE    R-freea          81128PL/SQL SOURCE    R-freea          4640obj htab chunk   R-freea          82176character set o  R-freea          61592permanent memor  R-perm          1904160reserved stoppe  R-freea          2720session param v  R-freea          10049209 rows selected.

这部分信息和x$ksmsp视图记录的Reserved信息是完全一致的:
SQL> select KSMCHCOM,KSMCHCLS,sum(KSMCHSIZ)   from x$ksmsp where KSMCHCLS like 'R%' group by ksmchcom,ksmchcls;

KSMCHCOM          KSMCHCLS   SUM(KSMCHSIZ)----------------  --------   -------------ksfqpar          R-freea        328616free memory      R-free         24591576PL/SQL MPCODE    R-freea         81128PL/SQL SOURCE    R-freea         4640obj htab chunk   R-freea         82176character set o  R-freea         61592permanent memor  R-perm         1904160reserved stoppe  R-freea         2720session param v  R-freea        16296009 rows selected.

-The End-

原创粉丝点击