Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11284430
  • 博文数量: 8065
  • 博客积分: 10002
  • 博客等级: 中将
  • 技术积分: 96708
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-16 17:06
文章分类

全部博文(8065)

文章存档

2008年(8065)

分类: 服务器与存储

2008-07-16 14:25:32

Oracle 9i 允许动态修改SGA的大小,但是,在实际中,经常有减少(resize/reduce) shared_pool_size不成功,发而导致checkpoint(CKPT) 进程耗用大量CPU的情况,本文简单的解释了一下这种情况并提供了临时解决方法



原因

是由于 在减少shared_pool_size 时,Oracle会尝试清空一段shared_pool,然后把它release 出来,而有时候正好被选中的 shared_pool 有正在使用,无法release 的内容 , 于是CKPT 不断(循环,中间的Sleep/yield 很少)的去通知/检查 那些没有release的shared memory,从而造成 占用大量CPU 。


正确做法
所以,要减少shared_pool_size ,一定要在很空闲/没什么连接的时候,另外,最好一次减少的size不要太大。

补救方法
另外,有时候,我们下了减少shared_pool_size 的命令,等待一阵,没有结果,于是尝试用CTRL+C 中断操作,但是有可能并没有真正的中断掉操作,后台还在继续尝试减少shared_pool_size 。从而使CKPT 消耗大量CPU
这时候,需要找出发出减少shared_pool_size 的命令的session ,并kill掉这个session.
阅读(295) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~