1、问题表现
系统因为访问并发量大,造成数据库连接失败,日志提取错误如下:
1.dpiStmt_execute: ORA-04036: PGA memory used by the instance exceeds PGA_AGGREGATE_LIMIT
2.dpiStmt_execute: ORA-00018: maximum number of sessions exceeded
开发工程师建议研究一下这个两个报错,oracle数据库方面sessions 与 PGA_AGGREGATE_LIMIT 这两配置的方向。
2、系统环境
服务器(虚拟机)配置:40核CPU、32G内存
操作系统:Centos 7.6 64位
Oracle版本:oracle12c 12.2.0.*
3、调优步骤
3.1系统参数调优
查询系统物理内存(≈31G)
> free
查询linux系统共享内存、消息队列、信号量的限制信息;
> ipcs -l
查询linux系统共享内存、消息队列、信号量的使用情况;
> ipcs -u
1)修改/etc/sysctl.conf 如下参数
(经多人研究确认,oracle官方建议kernel.shmmax设置为系统内存的50%,也就是≈16G,所以就按这个调优了):
kernel.shmmax
当前内存为32G 时,kernel.shmmax值设为 内存 *