具體原因:
是由于在減少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。
新聞熱點
疑難解答