………………
2405E680 00000000 00000000 00000000 00000000 [................]
2405E690 00000000 00000000 F4A4D8E8 735DAFAF [..............]s]
2405E6A0 00000000 00000049 2405E65C 11390064 [....I...\..$d.9.]
2405E6B0 01748F8F 18150001 407EC500 0A8A0500 [..t.......~@....]
2405E6C0 00020103 00090203 093A0000 1E070604 [..........:.....]
2405E6D0 F0836A0A A8E0F183 E036E426 83E426A8 [.j......&.6..&..]
2405E6E0 03F383F5 02030302 008E0000 00000025 [............%...]
2405E6F0 2405E6A4 110B3B04 656C6573 2A207463 [...$.;..select *]
2405E700 6F726620 7962206D 65642E73 00257470 [ from bys.dept%.]
2405E710 0000003D 2405E6EC 110B3B34 0000000D [=......$4;......]
2405E720 00000801 00170040 00010369 00000018 [....@...i.......]
…………
###########################################################################
通过x$kglob找出SQL语句子游标地址及堆6地址,并DUMP library cache,在TRACE文件中查看的内容。
堆0 heap 0 --属于父游标-library cache handle,子游标里也有两个堆,堆0 存放指向堆6的地址SYS@ bys3>select * from bys.dept;
SYS@ bys3>col KGLNAOBJ for a25
SYS@ bys3>select kglhdadr,kglhdpar,kglnaobj,KGLOBHS0,kglobhd0,KGLOBHS6,KGLOBHD6 from x$kglob where kglnaobj like 'select * from bys.dept%';
KGLHDADR KGLHDPAR KGLNAOBJ KGLOBHS0 KGLOBHD0 KGLOBHS6 KGLOBHD6
-------- -------- ------------------------- ---------- -------- ---------- --------
2358B76C 23D0705C select * from bys.dept 4348 2526A068 4060 243F2238
23D0705C 23D0705C select * from bys.dept 4516 23D65B44 0 00
父游标LibraryHandle 地址KGLHDPAR:23D0705C 子游标LibraryHandle地址KGLHDADR:2358B76C,
父游标堆0描述KGLOBHD0:23D65B44,子游标堆0描述:2526A068,子游标堆6描述KGLOBHD6:243F2238
这一点可以DUMP查看, alter session set events 'immediate trace name heapdump_addr level 2,addr0x23b31e80‘; 类似以下:desc=0x23b31e80这种就可以与上面查出的KGLOBHD0字段信息对应--我这是后来增加的,没法对应上了。
******************************************************
HEAP DUMP heap name="KGLH0^1020848" desc=0x23b31e80
extent sz=0xff4 alt=32767 het=28 rec=9 flg=2 opc=0
parent=0x200010b4 owner=0x23b31e4c nex=(nil) xsz=0xfe4 heap=(nil)
fl2=0x26, nex=(nil), dsxvers=1, dsxflg=0x0
dsx first ext=0x240b19c4
EXTENT 0 addr=0x240b19c4
Chunk 240b19cc sz= 44 p
--通过上一步查出的父游标heap 0描述符找到查看父游标所在CHUNK地址大小描述状态
KSMCHPTR KSMCHCOM KSMCHCLS KSMCHSIZ
-------- ---------------- -------- ----------
243F1D68 KGLH0^a8dc75cd recr 4096
SYS@ bys3>select KSMCHPTR,KSMCHCOM,KSMCHCLS ,KSMCHSIZ from x$ksmsp where KSMCHPAR='2526A068';
--通过上一步查出的子游标heap 0描述符找到查看子游标堆0所在CHUNK地址大小描述状态:
KSMCHPTR KSMCHCOM KSMCHCLS KSMCHSIZ
-------- ---------------- -------- ----------
23FDD830 KGLH0^a8dc75cd recr 4096 --KGLH0^a8dc75cd --H0 heap 0
SYS@ bys3>select KSMCHPTR,KSMCHCOM,KSMCHCLS ,KSMCHSIZ from x$ksmsp where KSMCHPAR='243F2238';
--通过上一步查出的子游标heap 6描述符,找到查看子游标堆6所在CHUNK地址大小描述状态
KSMCHPTR KSMCHCOM KSMCHCLS KSMCHSIZ
-------- ---------------- -------- ----------
23FDB830 SQLA^a8dc75cd recr 4096 --SQLA^a8dc75cd -SQL area
SYS@ bys3>col sql_text for a25
SYS@ bys3>select sql_id,hash_value,address,child_address,sql_text from v$sql where sql_text like 'select * from bys.dept%';
--查看SQL语句的SQL_ID,HASH_VALUE ADDRESS CHILD_AD等信息,与下面DUMP的信息对照。
SQL_ID HASH_VALUE ADDRESS CHILD_AD SQL_TEXT
------------- ---------- -------- -------- -------------------------