记一次,kettle执行JOB的一个BUG,linux下环境表输入(查询)卡住问题,windows环境下执行正常。

文章讲述了在Linux环境下使用Kettle进行数据采集时遇到的卡顿问题,通过分析发现是Kettle本身的问题。解决方法是利用DBLink和临时表,先将数据加载到目标库的临时表,然后从临时表进行插入或更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

采集数据,linux下执行JOB时。
发现表输入卡在,查询卡住,如图,11:37:19、11:37:42、 11:42:56
分别在40000、60000行的时候卡住,23s、5分14s。
在这里插入图片描述

拿出sql到pl/sql上查询,并查看执行计划,均没有卡住。
在这里插入图片描述
后续通过Windows上执行,发现并没有卡住。表输入很快就查询装载到组件里了。
表
通过查看oracle的Session,是查询是完成的,确认kettle的问题。继续通过修改反馈行数为1000,发现卡在某一块查询。后续通过修改日志级别:/level Debug,修改linux的jbdc版本、换一台linux、切换到kettle9.0、修改编码等,发现依旧不行。
在这里插入图片描述

解决方法

通过创建dblink、临时表,把数据先插入到临时表(建在目标库)中,再通过临时表 插入\更新 到目标表中。

1、创建dblink、临时表(建在目标库)。

create table tabe_name_temp(……);
create  public  database link dblin_name_A
  connect to username_A identified by password_A
  using '(DESCRIPTION =(ADDRESS_LIST =(ADDRESS =(PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521)))(CONNECT_DATA =(SERVICE_NAME = orcl)))';

2、kettle添加在转换前面,truncate、insert步骤。

  truncate table  tabe_name_temp;
insert into  tabe_name_temp@dblin_name_A
(……)
select 
……
from table_name

在这里插入图片描述
3、表输入语句改成查询tabe_name_temp。就可以正常的插入更新了。

select * from tabe_name_temp

在这里插入图片描述
在这里插入图片描述
至此,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值