专栏首页膨胀的面包DataX 报错:java.sql.SQLRecoverableException: IO 错误: Connection reset

DataX 报错:java.sql.SQLRecoverableException: IO 错误: Connection reset

在使用 DataX 抽取 Oracle 中的数据时,遇到了如下报错:

2021-04-19 14:04:47.207 [0-0-0-reader] ERROR ReaderRunner - Reader runner Received Exceptions:
com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-07], Description:[读取数据库数据失败. 请检查您的配置的 column/table/where/querySql或者向 DBA 寻求帮助.].  - 执行的SQL为: ****** 具体错误信息为:java.sql.SQLRecoverableException: IO 错误: Connection reset
        at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
        at com.alibaba.datax.plugin.rdbms.util.RdbmsException.asQueryException(RdbmsException.java:93) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
        at com.alibaba.datax.plugin.rdbms.reader.CommonRdbmsReader$Task.startRead(CommonRdbmsReader.java:220) ~[plugin-rdbms-util-0.0.1-SNAPSHOT.jar:na]
        at com.alibaba.datax.plugin.reader.oraclereader.OracleReader$Task.startRead(OracleReader.java:110) ~[oraclereader-0.0.1-SNAPSHOT.jar:na]
        at com.alibaba.datax.core.taskgroup.runner.ReaderRunner.run(ReaderRunner.java:57) ~[datax-core-0.0.1-SNAPSHOT.jar:na]
        at java.lang.Thread.run(Thread.java:748) [na:1.8.0_191]

java.sql.SQLException: Io 异常: Connection reset 大意看起来应该是连接问题,网上查了一下,说是当数据库连接池中的连接被创建而长时间不使用的情况下,该连接会自动回收并失效,但客户端并不知道,在进行数据库操作时仍然使用的是无效的数据库连接,这样,就导致客户端程序报“java.sql.SQLException: Io 异常: Connection reset” 或 “java.sql.SQLException 关闭的连接” 异常。

网上跟这个问题相关的解决思路是 Connection Reset 的原因有可能有以下几种原因:

  1. 配置的数据连接池的连接数不够用;
  2. 数据库的连接池中的连接,长时间不用,数据库主动断开连接,而客户端不知道,在用的时候仍然拿到的是无效的连接;

分别对应以上的两种猜想的原因,进行处理:

  1. 配置连接池的最大、最小、空闲连接数等;
  2. 配置对连接池里的连接进行有效性检查,如,配置有效性连接检查 sql 语句,配置是否进行有效性检查等;

但是这两种方法都不太适用我目前的情况,因为我无法修改 DataX 底层的源代码,所以无法验证上边两种方法,但是我找到了另一种解决方法。

首先解释下另一种出现这个问题的原因:

连接 ORACLE 服务器,客户端要生成随机密钥用于客户端认证,linux 下 JDK 默认使用 /dev/random,random 采用阻塞方式生成随机数,生成的速度很慢,ORACLE 服务器会主动 reset,并在 alert.log 中报错:

TNS-12535: TNS:operation timed out
    ns secondary err code: 12606
    nt main err code: 0
    nt secondary err code: 0
    nt OS err code: 0
  Client address: (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.6.21)(PORT=33460))
WARNING: inbound connection timed out (ORA-3136)

解决方案:

1、找到配置的 $JAVA_HOME,如果自己知道的就不需要这一步。

cat /etc/profile

在文件中找到 export JAVA_HOME= 这一行,后边的路径记下来。

2、编辑 JAVA_HOME/jre/lib/security/java.security,JAVA_HOME 替换为上一步查出的路径

vi /usr/local/jdk1.8.0_191/jre/lib/security/java.security

将文件中 securerandom.source=file:/dev/random 改为 file:/dev/urandom (urandom采用非阴塞式生成随机数,性能很好,不会产生超时)

3、解决。

via: ojdbc在linux环境下 java.sql.SQLRecoverableException: IO Error: Connection reset 的问题 - leon.sang - 博客园 https://www.cnblogs.com/bmwsl/p/11412362.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • sqoop 常见错误以及处理方式

    Oracle: Connection Reset Errors 错误代码 11/05/26 16:23:47 INFO mapred.JobClient: Ta...

    岑玉海
  • nginx 104 Connection reset by peer while reading upstream错误处理

    1.看日志发现正常日志和错误日志比例几乎1:1 2.错误日志全部是104: Connection reset by peer) while reading u...

    zd123
  • 关于SQLRecoverableException问题的排查和分析(r4笔记第13天)

    上周在升级时候,客户反馈某个job报了下面的错误,想让我们查看一下是不是数据库这边有什么问题。 报错的内容如下。 Caused by: java.sql.SQ...

    jeanron100
  • java整合datax 全网最详细的教程

    在resource目录下新建一个datax目录,在datax目录下新建test.json文件。

    java后端指南
  • 数据库shutdown之后无法启动的问题 (46天)

    最近在已有数据库服务器上又新建了4个数据库实例,目前一共有9个数据库实例。环境搭好以后做检查的时候。根据反馈,有个job报如下的错误。 Failed to c...

    jeanron100
  • 困扰我多年的Connection reset问题

    第一次出现:是thrift的python client去请求server,发现偶尔出现这个问题 第二次:接入第三方的api,去请求数据时,发现一个接入方的api...

    财主刀刀
  • apache ab压力测试报错(apr_socket_recv: Connection reset by peer (104))

    [root@aa~]# This is ApacheBench, Version 2.3 <$Revision: 655654 $>

    拓荒者
  • 通过Zimbra收取POP3邮件,总是提示错误:Connection reset

    通过Zimbra收取POP3邮件,总是提示错误:Connection reset。

    全栈程序员站长
  • 使用redis报 Failed to AUTH connection的错误

    Failed to AUTH connection 中文意思:无法验证连接

    meihuasheng
  • 使用Jedis在高并发报错 (java.net.SocketException: Connection reset by peer: socket write error)

    Connection reset by peer: socket write error错误分析: 常出现的Connection reset by peer: ...

    日薪月亿
  • rsync 常见错误与解决方法整理

    由于我们经常使用rsync进行服务器文件的同步工作,但在配置过程中,会出现很多问题,下面的错误基本上都是通过客户端返回的错误进行分析 我们都是通过错误日志查看 ...

    老七Linux
  • mac 安装 homebrew 报 connection 443 错误 解决方案

    参考 https://www.cnblogs.com/dtdxrk/p/12308074.html

    Theone67
  • nginx,ingress-nginx日常维护及报错

    readv() failed (104: Connection reset by peer) while reading upstream

    常见_youmen
  • MGR搭建过程中遇到的错误以及解决办法

    实际中我一共部署了三套MGR环境,分别是单机多实例的MGR环境,多机同网段的MGR环境,多机不同网段的MGR环境,部署的过程大同小异,但是还是有一些有出...

    AsiaYe
  • Linux学习12-ab报错apr_pollset_poll

    使用ab压力测试时候出现报错apr_pollset_poll: The timeout specified has expired (70007),本篇总结了几...

    上海-悠悠
  • Airflow自定义插件, 使用datax抽数

    Airflow之所以受欢迎的一个重要因素就是它的插件机制。Python成熟类库可以很方便的引入各种插件。在我们实际工作中,必然会遇到官方的一些插件不足够满足需求...

    Ryan-Miao
  • Unable to read from monitor: Connection reset by peer

    Unable to read from monitor: Connection reset by peer

    三杯水Plus
  • 当 HTTP 连接池遇上 KeepAlive 时

    最近在使用netty作为http客户端通过pool连接tomcat的时候,出现了很多Connection reset by peer 的IOException的...

    芋道源码
  • strerror 函数

    通过标准错误的标号,获得错误的描述字符串 ,将单纯的错误标号转为字符串描述,方便用户查找错误。

    用户7886150

扫码关注云+社区

领取腾讯云代金券