Re: Direct SGA access problem because of structs' changing start addre

From: Sigrid Keydana <keydana_at_gmx.de>
Date: Sun, 19 Jan 2014 15:53:29 +0100 (CET)
Message-ID: <trinity-d2c97305-50b1-4b80-869d-cad4ae547730-1390143209255_at_3capp-gmx-bs27>



Hi, thanks,

now I understand what Jonathan meant by "checking the right variables in x$ksmfsv" ;-) - this is the same address I get from querying

SQL> select ksmfsadr, ksmfstyp, ksmfsnam, ksmfssiz from x$ksmfsv where ksmfsnam like 'ksusga%'; KSMFSADR     KSMFSTYP            KSMFSNAM             KSMFSSIZ

---------------- ------------------------------ ------------------------------ ----------
000000006000A658 ksusg                ksusga_                  1456

But then, it should be possible to find out the locations of individual pointers in that structure by reading that from location and comparing to the actual min(addr) of k$ksuse, x$ksupr etc., right? Now when I look in x$ksmmem (my direct access Haskell code having different problems still ;-)), shouldn't I see x$ksuse's min(addr) as a ksmmmval, somewhere between address 000000006000A658 and 000000006000A658 + 1456 bytes?

SQL> select (select min(addr) from x$ksuse), (select min(addr) from x$ksupr) from dual; (SELECTMIN(ADDR) (SELECTMIN(ADDR)

---------------- ----------------

00000000A21FC9B8 00000000A21CB4E8

[oracle_at_node4 ~]$ grep -e 00000000A21FC9B8 -e 00000000A21CB4E8 ksmmem.txt
000000006000A6A0 00000000A21CB4E8                                                000000006000ADB8 00000000A21CB4E8                                               
[oracle_at_node4 ~]$

But there is a matching entry in the required range only for x$ksupr (the upper one), there's none for x$ksuse... Or are there additional layers of indirection ("pointers in the middle")?

One other thing, I was wondering if that approach could be used for x$ksmsp, too: SQL> select ksmfsadr, ksmfstyp, ksmfsnam, ksmfssiz from x$ksmfsv where ksmfsnam like 'ksmsp%'; KSMFSADR     KSMFSTYP            KSMFSNAM             KSMFSSIZ

---------------- ------------------------------ ------------------------------ ----------
000000006000CA78 struct ksmsst *        ksmspst_                8

[oracle_at_node4 ~]$ nm /oracle/base/product/12.1.0.1/dbhome_1/bin/oracle | grep ksmspst
000000006000ca78 A ksmspst_

But the ksmmmval at location 000000006000ca78 is "00"... so perhaps that structure is not the right one (though it's name sounded "closest" so to say)?

Thanks again,
greetings,
Sigrid

 
 
 
--
http://www.freelists.org/webpage/oracle-l
Received on Sun Jan 19 2014 - 15:53:29 CET

Original text of this message