本站承诺永不接任何虚假欺骗、联盟广告、弹窗广告、病毒广告、诱导充值等影响用户体验的广告,广告屏蔽插件会影响本站部分功能,还请不要屏蔽本站广告,感谢支持!

当前位置:首页 / 正文

2021-04-19 | 编程技术 | 2552 次阅读 | 等你评论 | 2 次点赞 | 繁体

在使用 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= 这一行,后边的路径记下来。

图片alt

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

标签: linux数据dataxetl

猜你喜欢
Fail2Ban安装使用及常用配置教程
Fail2Ban安装使用教程因为作为一个 linux 入门级别的小白, 很多人都会把一些 web 面板(比如宝塔面板)作为自己管理 vps 的首选, 而当我一段时间登录宝塔面板之后, 有时就会看...
局域内网的服务器利用个人电脑做跳板机访问互联网
公司内网的服务器均不连公网(互联网),问题来了:现在服务器上需要安装一些软件怎么办?目前一般都是编译安装!先将软件在外网机器上下载好,然后再复制到服务器内,编译安装!这种方式缺点就是比较麻烦,编...
据传宝塔面板后台会上传服务器上运行的网站信息
近期有网友根据 Github 上公开的源代码,发现宝塔面板会收集如下信息(信息真假自辩):(1)收集你所在服务器上的域名,并检查域名是否可用;(2)收集面板操作日志包括时间、用户ip、请求方式、...
如何定位Mysql中CPU占用高的查询语句
今天 mysql 服务器突然 CPU 告警,记录一下问题查找的过程第一步查看具体是哪个线程占用CPU最高1、在 Linux 中使用 top 命令找到 mysql 进程 PID2、指定进程 PID...
新安装Debian系统常用设置
解决 debian 系统没有 sudo 命令的问题刚装机的 debian 系统是没有 sudo 命令的,其实执行下面指令就可以安装:apt-get install sudo然后还需要把当前用户加...
MAC系统制作ubuntu启动U盘教程
最近新买了一台便宜的低功耗小主机惠普 T620,CPU 是 AMD 的 GX-415GA,4G 内存,准备给他刷个 ubuntu 系统,用来做简易的 NAS,并且安装 homeassistant...
树莓派开启Samba共享(smb)
什么是 Samba用简洁易懂的话说就是可以通过局域网,使用 Samba 给树莓派交换文件,具体专业的怎么说并不重要,可以去别的网上搜索,在这里只需要记住 Samba 可以传文件。安装 Samba...
mysql8利用CTE特性实现递归查询
递归查询分为父子查询和子父查询。父子查询: 根据父 id 查询下面所有子节点数据;子父查询: 根据子 id 查询上面所有父节点数据;下边就利用 mysql8 新增语法实现递归查询,表结构及数...
Excel 打开 CSV 文件乱码解决方法
经常接触数据的朋友,可能时不时会遇到这种情况,一份 CSV 或者 TXT 文件,使用 Excel 打开后就乱码了,但是使用文本方式(比如使用自带记事本)打开又是正常的,遇到这种情况怎么解决呢?
Fail2Ban安装使用及常用配置教程
Fail2Ban安装使用教程 因为作为一个 linux 入门级别的小白, 很多人都会把一些 web 面板(比如宝塔面板)作为自己管理 vps 的首选, 而当我一段时间登录宝塔面板之后, 有时就会看到
(首次提交评论需审核通过才会显示,请勿重复提交)