【MEMORY】Oracle 共享池堆简单说明

共享池堆(chunk)

共享池内存,最上面一层是Heap(堆),在一个堆中,内存被划分为多个大小相关的区,区中包含着大小不相等的若干chunk,其实共享池最基本的分配单元,大小不统一。

--共享池大小,$x$ksmsp,记录共享池chunk情况
select count(*),
round(sum(ksmchsiz)/1024/1024,0) total_size_mb,
round(avg(ksmchsiz),0) avg_size_b
from x$ksmsp;
--对比参数大小
show parameter shared_pool_size
--查看chunk类型
select ksmchcls,
count(*),
round(sum(ksmchsiz)/1024/1024,0) total_size_mb,
round(avg(ksmchsiz),0) avg_size_b
from x$ksmsp
group by ksmchcls order by ksmchcls;

chunk类型8种,R开头分别是保留池的类型。

  • free : 可直接被覆盖
  • perm : 永久类型,这种chunk不会被释放,如x$视图占用的都是此块内存
  • recr: 即Recreatable,可重建chunk。
  • freeabl: freeable,可释放的

参考《Oracle内核技术解密》

请使用浏览器的分享功能分享到微信等