您的位置:首页 > 数据库 > Oracle

14.oracle的dump理解十四 窥视内存

2016-04-29 22:19 507 查看
14.oracle的dump理解十四 窥视内存
欢迎转载,转载请标明出处:      http://blog.csdn.net/notbaron/article/details/51284582 

需要检查特定位置内存的内容,特定变量的内容。

       例如想知道SGA中,变量kcbnhb的内容(kcb是buffer cache,nhb是哈希桶的数字)

查看如下:

SQL> oradebug dumpvar sga kcbnhb

ub8 kcbnhb_ [14C2B8FA0, 14C2B8FA8) =00020000 00000000

查看会话某个变量的值:

SQL> oradebug dumpvar uga ugauso_p

qolprm ugauso_p [026FC2990, 026FC29B4) =00000000 00000000 00000000 00000000 000

00000 00000000 00000000 00000000 00000000

SQL> alter session setuse_stored_outlines=rule_based;

会话已更改。

SQL> oradebug dumpvar uga ugauso_p

qolprm ugauso_p [026FC2990, 026FC29B4) =00000001 5552000A 425F454C 44455341 000

00000 00000000 00000000 00000000 00000000

       查找SGA中的变量名字,可以查询结构x$ksmfsv,如下:

SQL> select * from x$ksmfsv where ksmfsnam like'kcbn%';

ADDR INDX INST_ID CON_ID
KSMFSNAM KSMFSTYP KSMFSADR  KSMFSSIZ

000000014A13F3A0  4413 1    0 kcbnbh_ sword
000000014C2B4800    4

…………..

可以根据地址来查看变量值:

SQL> oradebug peek 0x000000014C2B4800    4

[14C2B4800, 14C2B4804) = 0000A870

第二个参数 4 表示显示的字节数。

如果知道内存地址,可以直接查看,命令如下:

SQL> select * from x$ksmmem whereaddr=hextoraw('14C2B4800');

如果使用x$ksmem进行查看没有映射的地址,会话会报错ORA-03113。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: