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位的二进制表示),这个指针说明从首个字节开始多少个字节的数据是需要紧急处理的。再来张图:
阅读(2174) | 评论(0) | 转发(0) |