问题描述:数据库连接时显示连接到空实例,但监听却显示实例状态正常,如下所示:
数据库:oracle 19.15 + 多租户


处理过程:
查看trace日志,发现大量ora-04031告警,查sga大小1.5g,pga大小800m.数据库内存管理方式为ASMM,该服务器为虚拟机,内存为64g.
判断该库安装人员安装数据库时并未考虑内存的分配.
修改sga和pga.
alter system set sga_max_size=27g scope=spfile;
alter system set sga_target=27g scope=spfile;
alter system set pga_aggregate_target=10g scope=spfile;
与对方确认可以停库后,重启数据库.
此时新告警产生.
报错ORA-27125: unable to create shared memory segment
数据库无法启动,顿时感觉后背发凉,至于原因我猜DBA都懂,关库前确认客户端连接将近1000,马上查找原因.
速度将问题定位在/etc/sysctl.conf文件中kernel.shmmax参数配置上.
服务器内存64g,而该参数的值在搭建数据库时居然配置为8589934592,真是晕倒100次.
速度将kernel.shmmax修改到68719476735,同时将kernel.shmall值从2097152修改到16777216.
sysctl -p 使之生效,修改完成后数据库成功启动,sga与pga也成功修改.