压测时内存使用率 100%,进行大量 SWAP 操作,Oracle alert 日志文件出现 ORA-00600、ORA-07445、0RA-04031 等错误。

根据错误信息,特别是 ORA-04031 指示 shared pool 不足,按理说应该调高 SGA 的值,但是内存使用率已经达到 100%,所以第一感觉是 SGA,PGA 参数调大了,下调了 SGA、PGA 参数后,问题依旧。

观察 v$pgastat 中的 'over allocation count' 的值,理想值是0,否则表示 Oracle 实际分配的 PGA 大小已经超过了 P_A_T 参数指定的值。当出现此种情况时,Oracle 认为每个 Server Process 进程可能需要更多的 PGA 区域,于是 PGA 算法就为每个进程分配更多的资源,加快了内存溢出的速度。

解决办法:将 PGA 调高后,虽然内存使用率仍然接近 100%,但不再出现 SWAP 和 ORA-??? 报错,压力测试响应速度也在正常范围内。

-- By 许望(RHCA、OCM、VCP)
最后修改:2020 年 02 月 28 日 07 : 55 AM
如果觉得我的文章对你有用,请随意赞赏