暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

【排障记录】Oracle解决错误代码ORA-04031一例

原创 Jose Chen 2023-03-09
1130

故障描述

下班回到家屁股还没坐热就接到了用户的微信求助,告知某业务数据库,无法连接,登录主机控制台,也无法通过sqlplus工具登入数据库,告错提示如下,错误代码ORA-04031,笔者由于工作年限不长,也是第一次见,但是根据英语提示,应该是SGA共享内存资源不足导致的问题(注:所有图片已做脱敏处理)
1.jpg

排查过程

步骤一

查看主机内存,发现有swap空间被使用的情况(我理解的swap是内存空间不足的时候,才会被拿过来用),这也更加笃定了笔者的猜想

free -m

2.jpg

步骤二

按照笔者的习惯,会先查看Alert日志有什么报错信息,如图所示,看起来像是执行了一些sql导致共享内存无法分配更多
Alert日志的位置在$ORACLE_BASE/diag/rdbms/orcl/ORCL/trace/alert_ORCL.log下

3.jpg

步骤三

尝试使用sqlplus工具登录数据库,失败

步骤四

查看主机创建的Oracle会话数量(非本地),数量较多,于是直接就KILL掉了所有LOCAL=NO的会话

操作系统会话.png

ps -ef |grep 'LOCAL=NO'|grep -v grep|awk '{print$2}'|xargs kill -9

步骤五

再次用sqlplus 登录数据库,成功。查看数据库的内存管理模式,属于ASMM管理模式,SGA最大值为6432M,我认为是偏小的。

使用ASMM管理.png

步骤六

扩大参数sga_max_size的值为16G,重启数据库生效,后经用户反馈再无相应错误,故障解除。

更改后的SGA.png

经验总结

了解数据库的几种内存管理模式,如MMM,ASMM,AMM等,结合主机的内存,从而调整合适的参数,可以减少此类事件的发生。

最后修改时间:2023-03-13 10:17:56
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论