Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3494641
  • 博文数量: 738
  • 博客积分: 1860
  • 博客等级: 上尉
  • 技术积分: 7745
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-07 08:51
个人简介

偶尔有空上来看看

文章分类

全部博文(738)

文章存档

2023年(75)

2022年(134)

2021年(238)

2020年(115)

2019年(11)

2018年(9)

2017年(9)

2016年(17)

2015年(7)

2014年(4)

2013年(1)

2012年(11)

2011年(27)

2010年(35)

2009年(11)

2008年(11)

最近访客

分类: Oracle

2022-01-07 22:13:39

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) 的目的是什么?



  1. 数据异常或中断是 Oracle NET 中的一个功能,它允许在事务
  2. 完成之前将其中断。它将客户端和服务器返回到可以继续的状态。
  3. 诸如 Ctrl-c 之类的中断可以作为正常数据流(带内)的一部分发送,也可以作为单独的异步 
  4. 消息(带外)发送。带外中断要快得多并且会中断数据流。


  5. 如果底层协议支持发送
  6. 紧急数据,则默认启用带外中断 (OOB)


  7. 如果参数 DISABLE_OOB 设置为 OFF,则它使 Oracle Net 能够
  8. 使用底层协议提供的紧急数据发送和接收“中断”消息。


  9. 如果打开,则禁用使用
  10. 底层协议提供的紧急数据发送和接收“中断”消息的能力。


  11. 带外中断是发生在底层网络级别的通信中断。有时,这些中断数据包会导致客户端和服务器进程不同步。通过设置 DISABLE_OOB=ON,您可以强制客户端和服务器使用带内中断。


  12. Oracle TWO_TASK 层具有中断/重置逻辑以确保客户端和服务器同步。如果操作系统支持 OOB(带外中断),中断/重置逻辑将有效工作,否则可能会出现 TWO_TASK 错误,然后是 ORA-3113。
  13. 因此,设置参数 DISABLE_OOB=ON 以避免上述情况下的这些 TWO_TASK/ORA-3113 错误是有道理的。

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

阅读(2274) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~