from:DBA手记
select subpool, name, sum(bytes), round(sum(bytes) / 1048576, 2) mb
from (select 'shared pool(' ||
decode(to_char(ksmdsidx), '0', '0-unused', ksmdsidx) || '):' subpool,
ksmssnam name,
ksmsslen bytes
from x$ksmss
where ksmsslen > 0
and lower(ksmssnam) like lower('%free memory%'))
group by subpool, name
order by subpool asc, sum(bytes) desc
;