windows上准备安装应用,数据库运行在另外一个linux主机上,服务器之间属于两个网段,所以过了防火墙,从windows上连接数据库,经过大概20秒中遇到了ORA-12637错误。
从windows上tnsping 数据库IP,是没问题的,但是用sqlplus 连接就会遇到这个异常。
数据库版本很新 19.13,windows上安装的客户端 19.3
开始搜索MOS,找到一篇类似文章:
在检查网络时,请确保它也可以支持 URG 标志,因为这也是 Oracle 软件所要求的,并且在不允许 OOB 数据包时通常也会阻止外部读取。
先看什么是OOB
使用 sqlnet.ora 文件参数 DISABLE_OOB=ON 禁用带外中断 (OOB) 的目的是什么?
-
-
数据异常或中断是 Oracle NET 中的一个功能,它允许在事务
-
完成之前将其中断。它将客户端和服务器返回到可以继续的状态。
-
诸如 Ctrl-c 之类的中断可以作为正常数据流(带内)的一部分发送,也可以作为单独的异步
-
消息(带外)发送。带外中断要快得多并且会中断数据流。
-
-
-
如果底层协议支持发送
-
紧急数据,则默认启用带外中断 (OOB) 。
-
-
-
如果参数 DISABLE_OOB 设置为 OFF,则它使 Oracle Net 能够
-
使用底层协议提供的紧急数据发送和接收“中断”消息。
-
-
-
如果打开,则禁用使用
-
底层协议提供的紧急数据发送和接收“中断”消息的能力。
-
-
-
带外中断是发生在底层网络级别的通信中断。有时,这些中断数据包会导致客户端和服务器进程不同步。通过设置 DISABLE_OOB=ON,您可以强制客户端和服务器使用带内中断。
-
-
-
Oracle TWO_TASK 层具有中断/重置逻辑以确保客户端和服务器同步。如果操作系统支持 OOB(带外中断),中断/重置逻辑将有效工作,否则可能会出现 TWO_TASK 错误,然后是 ORA-3113。
-
因此,设置参数 DISABLE_OOB=ON 以避免上述情况下的这些 TWO_TASK/ORA-3113 错误是有道理的。
-
-
DISABLE_OOB 在 sqlnet.ora 文件中设置。有关此参数的更多信息,请参阅注释 67983.1。
-
参考:
连接到 19c 数据库时,Oracle 19c 客户端返回 ORA-12637(文档 ID 2662778.1)
什么是 DISABLE_OOB(带外中断)(文档 ID 373475.1)
附加内容:
看看什么是URG:URG控制位是用来告诉接收端在一个发送的IP数据包中某特定的数据是紧急的,需要优先处理。如果URG控制位置1,接收端就会分析紧急指针(IP报头中用一个16位的二进制表示),这个指针说明从首个字节开始多少个字节的数据是需要紧急处理的。再来张图:
阅读(2534) | 评论(0) | 转发(0) |