故障描述
下班回到家屁股还没坐热就接到了用户的微信求助,告知某业务数据库,无法连接,登录主机控制台,也无法通过sqlplus工具登入数据库,告错提示如下,错误代码ORA-04031,笔者由于工作年限不长,也是第一次见,但是根据英语提示,应该是SGA共享内存资源不足导致的问题(注:所有图片已做脱敏处理)
排查过程
步骤一
查看主机内存,发现有swap空间被使用的情况(我理解的swap是内存空间不足的时候,才会被拿过来用),这也更加笃定了笔者的猜想
free -m
步骤二
按照笔者的习惯,会先查看Alert日志有什么报错信息,如图所示,看起来像是执行了一些sql导致共享内存无法分配更多
Alert日志的位置在$ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log下
步骤三
尝试使用sqlplus工具登录数据库,失败
步骤四
查看主机创建的Oracle会话数量(非本地),数量较多,于是直接就KILL掉了所有LOCAL=NO的会话
ps -ef |grep 'LOCAL=NO'|grep -v grep|awk '{print$2}'|xargs kill -9
步骤五
再次用sqlplus 登录数据库,成功。查看数据库的内存管理模式,属于ASMM管理模式,SGA最大值为6432M,我认为是偏小的。
步骤六
扩大参数sga_max_size的值为16G,重启数据库生效,后经用户反馈再无相应错误,故障解除。
经验总结
了解数据库的几种内存管理模式,如MMM,ASMM,AMM等,结合主机的内存,从而调整合适的参数,可以减少此类事件的发生。
最后修改时间:2023-03-13 10:17:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。