x$ KSMSP视图(引用)

原文转自: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        24836016
R-freea       1946032
R-perm        1904160
free          32459264
freeabl       294999744
perm          70090848
recr          144187104
7 rows selected.
各个版本都不一样,我在10g r1中查询结果如下:

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

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

没有R-perm 类型的。

在10g r2中的结果如下:

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

KSMCHCLS      SUM(KSMCHSIZ)
--------        -------------
freeabl          8269108
recr             13469740
R-freea          36688
perm             43004308
no acce          4128848
R-free           3370288
free             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          328616
free memory      R-free           25216256
PL/SQL MPCODE    R-freea          81128
PL/SQL SOURCE    R-freea          4640
obj htab chunk   R-freea          82176
character set o  R-freea          61592
permanent memor  R-perm          1904160
reserved stoppe  R-freea          2720
session param v  R-freea          1004920
9 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        328616
free memory      R-free         24591576
PL/SQL MPCODE    R-freea         81128
PL/SQL SOURCE    R-freea         4640
obj htab chunk   R-freea         82176
character set o  R-freea         61592
permanent memor  R-perm         1904160
reserved stoppe  R-freea         2720
session param v  R-freea        1629600
9 rows selected.

-The End-

你可能感兴趣的:(x$ KSMSP视图(引用))