Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2885724
  • 博文数量: 599
  • 博客积分: 16398
  • 博客等级: 上将
  • 技术积分: 6875
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-30 12:04
个人简介

WINDOWS下的程序员出身,偶尔也写一些linux平台下小程序, 后转行数据库行业,专注于ORACLE和DB2的运维和优化。 同时也是ios移动开发者。欢迎志同道合的朋友一起研究技术。 数据库技术交流群:58308065,23618606

文章分类

全部博文(599)

文章存档

2014年(12)

2013年(56)

2012年(199)

2011年(105)

2010年(128)

2009年(99)

分类: Oracle

2012-06-26 13:59:25

SGA中的fixed area中包含了大量变量,这些变量名字是隐藏的而且没有必要知道,可以通过x$ksmfsv 表中获得这些变量相关信息。
 
SQL> desc x$ksmfsv
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ADDR                                               RAW(8)
 INDX                                               NUMBER
 INST_ID                                            NUMBER
 KSMFSNAM                                           VARCHAR2(64)
 KSMFSTYP                                           VARCHAR2(64)
 KSMFSADR                                           RAW(8)
 KSMFSSIZ                                           NUMBER
 x$ksmmem 里含有x$ksmfsv相关变量的当前值。
SQL> desc x$ksmmem
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ADDR                                               RAW(8)
 INDX                                               NUMBER
 INST_ID                                            NUMBER
 KSMMMVAL                                           RAW(8)
通过x$ksmfsv.KSMFSADR  与 x$ksmmem.ADDR想关联,可以查询相关变量的值。
可以通过如下查询得到当前变量的值:
 
SQL>
SQL> select fsv.KSMFSNAM,sga.*
  2  from x$ksmfsv fsv, x$ksmmem sga
  3  where sga.addr=fsv.KSMFSADR
  4   and sga.KSMMMVAL<>'00' and rownum<=10;
KSMFSNAM             ADDR           INDX    INST_ID KSMMMVAL
-------------------- -------- ---------- ---------- --------
ksmsgf_              03C384E0          0          1 00000001
ksmvsg_              03C384E4          1          1 00000EEE
ksmver_              03C384E8          2          1 0A200100
ksmismf_             03C384EC          3          1 00000001
ksmgsp_              03C38508         10          1 03C3A018
ksmsth_              03C39ECC       1659          1 04E9AA90
ksmfst_              03C39ED0       1660          1 4F867010
ksmcrttimestamp_     03C39F78       1702          1 0026DE7D
ksmanotscl_          03C3A010       1740          1 00000001
ksmgsg_              03C3A018       1742          1 03C38510
已选择10行。

可以看到变量ksmsgf_ 当前的值为 0x00000001
 
也可以通过dumpvar来查询变量的值:
SQL> oradebug dumpvar sga ksmsgf_
ksmsgft ksmsgf_ [3C384E0, 3C384E4) = 00000001
 
当然还可以使用peek来查询。
SQL> oradebug peek 0x03C384E0 4
[3C384E0, 3C384E4) = 00000001
 
可以通过setvar来改变变量的值(千万不要再生产环境修改变量的值):
 
SQL> oradebug setvar sga ksmsgf_  0x00000002
BEFORE: [3C384E0, 3C384E4) = 00000000
AFTER:  [3C384E0, 3C384E4) = 00000002
SQL>
SQL> select fsv.KSMFSNAM,sga.*
  2  from x$ksmfsv fsv, x$ksmmem sga
  3  where sga.addr=fsv.KSMFSADR
  4   and sga.KSMMMVAL<>'00' and rownum<=10;
KSMFSNAM             ADDR           INDX    INST_ID KSMMMVAL
-------------------- -------- ---------- ---------- --------
ksmsgf_              03C384E0          0          1 00000002
ksmvsg_              03C384E4          1          1 00000EEE
ksmver_              03C384E8          2          1 0A200100
ksmismf_             03C384EC          3          1 00000001
ksmgsp_              03C38508         10          1 03C3A018
ksmsth_              03C39ECC       1659          1 04E9AA90
ksmfst_              03C39ED0       1660          1 4F867010
ksmcrttimestamp_     03C39F78       1702          1 0026DE7D
ksmanotscl_          03C3A010       1740          1 00000001
ksmgsg_              03C3A018       1742          1 03C38510
已选择10行。
SQL>
阅读(1498) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~