您的位置:首页 > 数据库 > Oracle

oracle锁定sga物理内存:pre_page_sga和lock_sga

2016-06-03 15:10 399 查看
有套生产系统,晚上做备份的时候,系统换页特别频繁,oracle产生大量library cache方面的等待。

由于该库上的硬解析特别严重,考虑将cursor_sharing参数设置为force或者similar来先解决硬解析问题。

cursor_sharing设置成了similar,硬解析情况有所缓解,但也带来了其他一些问题,暂且不表。

可是当晚上做备份的时候,换页情况依然很严重,导致等待事件都是共享池方面的争用。

但从awr报告中来看,共享池大小基本保持稳定,未发生剧烈动荡。

所以,我现在怀疑是当备份期间,系统大量换页,导致sga内存大量使用换页内存,物理内存被来回置换。

也就是说,虽然看起来共享池和buffer cache都稳定了大小,但实际情况是,但是所持有的内存并非物理内存,而是可能是大量换页内存,继而造成整个oracle效率低下,产生ora-3136连接超时等情况。

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

现在,我考虑通过修改pre_page_sga和lock_sga参数,将sga内存在数据库启动之时就使用物理内存,并且在后续使用过程中不被置换出去。

pre_page_sga参数便是在oracle启动的时候,就加载oracle sga全部物理内存

lock_sga参数则是保证在后续使用过程中,物理内存不被置换出去

lock_sga参数不能和memory_target等参数共用,且受限于操作系统可以锁定的内存大小,ulimit -l unlimited 将参数都改为不限制 。

好像Solaris系统不支持该参数。。。

--------------------------------------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: