前言
今天巡检遇到数据库报错 ORA-2730x 错误,数据库版本为Oracle 11204 (x86_64),错误日志如下:
ORA-00603: ORACLE server session terminated by fatal error
ORA-27504: IPC error creating OSD context
ORA-27300: OS system dependent operation:sendmsg failed with status: 105
ORA-27301: OS failure message: No buffer space available
ORA-27302: failure occurred at: sskgxpsnd2
※ 关键词: ORA-2730x、status: 105、sskgxpsnd2。
一、问题分析
1、错误代码解释
通过 Oracle oerr
工具查看相关提示信息:
可以发现:ORA-2730x
显示是OS系统层面的错误。
2、查询 MOS 文档
通过查询MOS文档,发现该错误相符合的文档:
- Troubleshooting ORA-27300 ORA-27301 ORA-27302 Errors (Doc ID 579365.1)
- Oracle Linux: ORA-27301:OS Failure Message: No Buffer Space Available ( Doc ID 2041723.1 )
- ORA-27301: OS Failure Message: No Buffer Space Available / ORA-27302: failure occurred at: sskgxpsnd2 Source Script ( Doc ID 2322410.1 )
根据文档提示: 这是因为可用于网络缓冲区预留的空间较少,可通过修改
vm.min_free_kbytes
参数和 MTU
来修复。
二、解决方案
官方 MOS 文档提供了详细的解决方案:
完整操作步骤:
1、关闭数据库和集群
srvctlstopdatabase-dorcl
2、修改MTU参数
ifconfiglomtu16384
或者:
以下命令修改可以使server重启后也生效
cat<<EOF>>/etc/sysconfig/network-scripts/ifcfg-loMTU=16384EOF
3、重启网络使其生效,对于 crs
运行的server,需要关闭 crs
,重启网络。或请在维护时间窗口,设置 2 里的参数后,重启服务器。
servicenetworkrestart
4、修改系统参数 vm.min_free_kbytes
##设定vm.min_free_kbytes参数为物理内存的0.4%##本机内存大小为131357180Kb,则配置参数大小为131357180*0.4%≈525429cat<<EOF>>/etc/sysctl.conf/etc/sysctl.confEOF##生效sysctl-p
5、重启主机
reboot
📢 注意: 需要数据库 停机
进行操作!