环境描述: OS:linux 7.4
DB:12.2.0.1
patch:30116802
背景描述:
某客户应用oracle数据库最新季度191015补丁30116802后,PL/SQL访问带有BLOB字段的部分行时,报错“ORA-03114: not connected to
ORACLE',数据库日志和监听日志并没有任何异常,在应用程序上,下载部分文件时,下载一半时应用程序报错”java.io.IOException:
IO 错误: 远程主机强迫关闭了一个现有的连接”
正常情况下,有任何异常至少在oracle的alert日志或者监听日志至少有异常,现在没有任何报错,一度怀疑是网络或者是应用程序本身的bug,但是开发人员反馈没有应用补丁前程序和PLSQL访问是正常的,网络也没有做任何变更,那么很明显跟oracle的季度补丁有关系,因为跟BLOB字段访问有关,查询MOS发现Connection Reset By Peer When Doing A Query On A BLOB (文档 ID 2399524.1),跟这个问题极为像似,解决方案是在程序中添加以下参数:
-Doracle.net.useZeroCopyIO=false
-Doracle.jdbc.ReadTimeout=1800 (n is in milliseconds)
-Doracle.net.keepAlive=true
开发人员反馈,这个应用程序不适用这个参数,让从数据库层面进行解决,Zero-Copy I/O protocol官方解决如下:Zero-Copy I/O protocol: turned on by default. Turning it off in a RAC data
DB:12.2.0.1
patch:30116802
背景描述:
某客户应用oracle数据库最新季度191015补丁30116802后,PL/SQL访问带有BLOB字段的部分行时,报错“ORA-03114:
正常情况下,有任何异常至少在oracle的alert日志或者监听日志至少有异常,现在没有任何报错,一度怀疑是网络或者是应用程序本身的bug,但是开发人员反馈没有应用补丁前程序和PLSQL访问是正常的,网络也没有做任何变更,那么很明显跟oracle的季度补丁有关系,因为跟BLOB字段访问有关,查询MOS发现Connection Reset By Peer When Doing A Query On A BLOB (文档 ID 2399524.1),跟这个问题极为像似,解决方案是在程序中添加以下参数:
-Doracle.net.useZeroCopyIO=false
-Doracle.jdbc.ReadTimeout=1800 (n is in milliseconds)
-Doracle.net.keepAlive=true
开发人员反馈,这个应用程序不适用这个参数,让从数据库层面进行解决,Zero-Copy I/O protocol官方解决如下:Zero-Copy I/O protocol: turned on by default. Turning it off in a RAC data
