shared pool 总结

两个概念:1、chain    2、chunk


SHARED POOL







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


FREE



这里要引入一个概念:ORA—4031这是一个经典的free空间的报错:

主要的原因就是 free中都是小的chunk,这时候来了一个大的sql语句做硬解析,而free中没有大的chunk了,报ORA—4031

有人问了,为什么free中都是小的chunk了呢?主要是由于大量的硬解析,产生了大量的小的chunk(我们也称之为碎片),产生的过程见上图

这就是为什么我看free还有200M,还会报ORA—4031的原因,因为都是些小的chunk组成了你这200M啊~!!


有的DBA用 alter system flush shared_pool 这条命令去消除4031错误

这样确实能占时消除4031错误,因为library cache链上的chunk被没清空了,回到了free中,free中就有了大的chunk

但是,这是所有的sql都会走硬解析,随着系统的运行,free中的chunk又回到了library cache中,继续产生小的chunk在free中,最后还是可能会报4031错误

治标不治本,蒙蒙甲方还可以。。。。




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



library cache



select count(*) from x$ksmsp;             ---这个字典中每行对应shared_pool中的一个chunk,这条语句查的就是shared_pool中的chunk总数

如果oracle执行了硬解析,那么chunk数就会增加。所以有时候我们可以用这条语句去看一段时间内是否做了大量的硬解析(行数大量增加)

当然我们一般还是用这个语句去看解析的状况:select name,value from v$sysstat where name like 'parse%';


注:我上图中,oracle去5号链上遍历,会把5号链锁住(libaray cache latch),这样的话如果咱们吧shared_pool设的很大,library cache中缓存的sql/执行计划就会很多,链就会很长,那么遍历的时间就长,锁住链的时间就会很长。









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值