前言
今天巡檢遇到資料庫報錯 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、關閉資料庫和叢集
srvctl stop database -d orcl
2、修改MTU參數
ifconfig lo mtu 16384
或者:
以下指令修改可以使server重新開機後也生效
cat <<EOF>>/etc/sysconfig/network-scripts/ifcfg-lo
MTU=16384
EOF
3、重新開機網絡使其生效,對于
crs
運作的server,需要關閉
crs
,重新開機網絡。或請在維護時間視窗,設定 2 裡的參數後,重新開機伺服器。
service network restart
4、修改系統參數
vm.min_free_kbytes
##設定 vm.min_free_kbytes 參數為實體記憶體的0.4%
##本機記憶體大小為131357180 Kb,則配置參數大小為131357180*0.4%≈525429
cat <<EOF>>/etc/sysctl.conf
/etc/sysctl.conf
EOF
##生效
sysctl -p
5、重新開機主機
reboot
📢 注意: 需要資料庫
停機
進行操作!