2014-09-17 13:23:48 +02:00

96 lines
3.7 KiB
MySQL

COL addrlen NEW_VALUE addrlen
COL addrmask NEW_VALUE addrmask
SET TERMOUT OFF
SELECT VSIZE(addr) addrlen, LPAD('X',VSIZE(addr)*2,'X') addrmask FROM x$kcbsw WHERE ROWNUM = 1;
SET TERMOUT ON
-- ( SELECT /*+ INDEX(x$ksmmem) */ addr m1addr, HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(addr),'&addrmask')+&addrlen*2,'&addrmask')) ) m1parent_addr FROM x$ksmmem) m1,
--SELECT /*+ INDEX(x$ksmmem m) */
-- addr,
---- ksmmmval VALUE,
-- HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(addr),'&addrmask')+&addrlen*2,'&addrmask')) ) owner_addr
--FROM
-- x$ksmmem m
--WHERE addr > HEXTORAW('00')
--CONNECT BY
-- HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(addr),'&addrmask')+&addrlen*2,'&addrmask')) ) = addr
--START WITH
-- addr = hextoraw('&1')
--/
--SELECT /*+ ORDERED
-- USE_NL(m2,m1)
-- USE_NL(m3,m2)
-- USE_NL(m4)
-- USE_NL(m5)
-- USE_NL(m6)
-- USE_NL(m7)
-- USE_NL(m8)
-- USE_NL(m9)
-- USE_NL(m10)
-- INDEX(m1)
-- INDEX(m2)
-- INDEX(m3)
-- INDEX(m4)
-- INDEX(m5)
-- INDEX(m6)
-- INDEX(m7)
-- INDEX(m8)
-- INDEX(m9)
-- INDEX(m10)
-- NO_MERGE(m1)
-- NO_MERGE(m2)
-- */
-- m1.m1addr,
-- m2.m2addr,
---- ksmmmval VALUE,
-- HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m1addr),'&addrmask')+&addrlen*2,'&addrmask')) ) owner_addr
--FROM
-- ( SELECT /*+ NO_MERGE */ addr m1addr, HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(addr),'&addrmask')+&addrlen*2,'&addrmask')) ) m1parent_addr FROM x$ksmmem) m1,
-- ( SELECT /*+ NO_MERGE */ addr m2addr, HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(addr),'&addrmask')+&addrlen*2,'&addrmask')) ) m2parent_addr FROM x$ksmmem) m2
---- x$ksmmem m3,
---- x$ksmmem m4,
---- x$ksmmem m5,
---- x$ksmmem m6,
---- x$ksmmem m7,
---- x$ksmmem m8,
---- x$ksmmem m9,
---- x$ksmmem m10
--WHERE
-- m1addr = HEXTORAW('&1')
--AND m2parent_addr = m1addr
---- AND m3.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m2.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m4.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m3.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m5.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m4.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m6.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m5.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m7.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m6.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m8.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m7.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m9.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m8.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
---- AND m10.addr = HEXTORAW( TRIM(TO_CHAR(TO_NUMBER(RAWTOHEX(m9.addr),'&addrmask')+&addrlen*2,'&addrmask')) )
--/
SELECT /*+ ORDERED */
b.ksmmmval
FROM
( SELECT /*+ NO_MERGE */ ksmmmval FROM x$ksmmem WHERE addr = (SELECT /*+ NO_MERGE NO_UNNEST */
CAST(HEXTORAW(
TRIM(TO_CHAR(TO_NUMBER('30F3C504','&addrmask')+&addrlen*2,'&addrmask'))
)
AS RAW(4)
)
FROM DUAL
)
) a,
x$ksmmem b
WHERE
a.ksmmmval = b.addr
/