环境介绍:
os:8.2
db:19.13
问题现象
Fatal NI connect error 12637, connecting to:
(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.73.157)(PORT=52687))
VERSION INFORMATION:
TNS for Linux: Version 19.0.0.0.0 - Production
Oracle Bequeath NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
TCP/IP NT Protocol Adapter for Linux: Version 19.0.0.0.0 - Production
Version 19.13.0.0.0
Time: 05-MAY-2023 07:50:55
Tracing not turned on.
Tns error struct:
ns main err code: 12637
TNS-12637: Packet receive failed
ns secondary err code: 12532
nt main err code: 0
nt secondary err code: 0
nt OS err code: 0
2023-05-05T07:50:55.167759+08:00
opiodr aborting process unknown ospid (862230) as a result of ORA-609
2023-05-05T07:50:55.168086+08:00
Errors in file /u01/app/oracle/diag/rdbms/orcl/orcl1/trace/orcl1_ora_862230.trc:
ORA-00609: could not attach to incoming connection
ORA-12637: Packet receive failed
查看sqlnet.ora文件
[oracle@hisdb1 admin]$ ll
total 12
drwxr-xr-x 2 oracle oinstall 6 Nov 5 2021 mkdir
drwxr-xr-x 2 oracle oinstall 64 Apr 17 2019 samples
-rw-r--r-- 1 oracle oinstall 1536 Feb 14 2018 shrept.lst
-rw-r--r-- 1 oracle oinstall 139 Nov 28 16:06 sqlnet.ora
-rw-r----- 1 oracle oinstall 1050 Nov 5 2021 tnsnames.ora
[oracle@hisdb1 admin]$ more sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=8
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=8
#SQLNET.AUTHENTICATION_SERVICES = (NTS)
SQLNET.EXPIRE_TIME=2
搜索MOS,找到一篇类似文章:
Changes
New Feature added to 19c. Client will trigger the server to test for
OOB availability at connect time. If it fails the error is reported.
Cause
New feature in 19c client that will trigger the server to Auto test if Out of Bound breaks are allowed on the network.
This is on by default.
So when the 19c client connects to the server it will trigger the server to test OOB this is seen in the server side trace
nsaccept: Checking OOB Support
If the network underneath does not support the OOB the OOB check will fail. The connection will also fail.
Solution
The True solution in this case would be to resolve the underlying network inability to handle Out of Bound packets.
The network should support those in order to handle things like using a
Control C to interrupt the communication between the client and server.
In the meantime you can use the following workarounds.
Option 1
To stop the initial OOB check you can use the parameter
5.2.8 DISABLE_OOB_AUTO
https://docs.oracle.com/en/datab ... vices-reference.pdf
Please note if you do require an OOB break later in the life of the
connection it will likely also fail and cause a failure later in the
life of the connection.
So not the best option.
Second option
DISABLE_OOB=ON in the SQLNET.ORA file on the server.
https://docs.oracle.com/en/datab ... vices-reference.pdf
This will turn off the OOB usage until you can resolve the underlying network inability to handle the packets.
Long term we prefer to keep OOB in use to allow things like a Control C to be able to function normally.
So it is best to only use this as a workaround and fix the true underlying network inability to handle the OOB packets.
Additional Note
While checking the network make sure it can also support the URG flag as
that is also required by the Oracle software and from external reading
often also prevented when the OOB packets are not allowed.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。