前言

今天巡检遇到数据库报错 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、关闭数据库和
集群

1
2
3
4
5
6
7
8
srvctl stop database -d orcl


AI写代码bash



* 1

2、修改MTU参数

1
2
3
4
5
6
7
8
ifconfig lo mtu 16384


AI写代码bash



* 1

或者:

以下命令修改可以使server重启后也生效

1
2
3
4
5
6
7
8
9
10
11
12
cat <<EOF>>/etc/sysconfig/network-scripts/ifcfg-lo
MTU=16384
EOF


AI写代码bash



* 1
* 2
* 3

3、重启网络使其生效,对于 crs 运行的server,需要关闭 crs,重启网络。或请在维护时间窗口,设置 2 里的参数后,重启
服务器

1
2
3
4
5
6
7
8
service network restart


AI写代码bash



* 1

4、修改系统参数 vm.min_free_kbytes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
##设定 vm.min_free_kbytes 参数为物理内存的0.4%
##本机内存大小为131357180 Kb,则配置参数大小为131357180*0.4%≈525429
cat <<EOF>>/etc/sysctl.conf
/etc/sysctl.conf
EOF
##生效
sysctl -p


AI写代码bash



* 1
* 2
* 3
* 4
* 5
* 6
* 7

5、重启主机

1
2
3
4
5
6
7
8
reboot


AI写代码bash



* 1

📢 注意: 需要数据库 停机 进行操作!


参考MOS文档:

Bug 20250147 - ORA-600 [kjxmgmb_nreq:!bat] can occur in RAC crashing the instance (Doc ID 20250147.8)