Oracle Kettle转换锁定数据库表?

Oracle Kettle转换锁定数据库表?,oracle,pentaho,kettle,Oracle,Pentaho,Kettle,我有一个主转换调用了几个子转换,使用Pentaho壶中的单个线程步骤。子转换写入Oracle数据库 主要转换如下所示: Data Frame --> Single threader 1 --> Single threader 1 --> Single threader 3 In --> A bunch of modifications and checks --> Write to DB | v Out 单线程程序调用的子转换如下所示: Data Fram

我有一个主转换调用了几个子转换,使用Pentaho壶中的单个线程步骤。子转换写入Oracle数据库

主要转换如下所示:

Data Frame --> Single threader 1  --> Single threader 1 --> Single threader 3
In --> A bunch of modifications and checks --> Write to DB
 |
 v
Out
单线程程序调用的子转换如下所示:

Data Frame --> Single threader 1  --> Single threader 1 --> Single threader 3
In --> A bunch of modifications and checks --> Write to DB
 |
 v
Out
out步骤直接连接到in步骤的原因是我希望返回未修改的行,但我需要修改它以获得要插入到DB中的正确数据。每个子转换更新一个或两个表

所有转换中的所有步骤都使用相同的数据库连接,即文件之间的共享资源。在所有转换中选中“使转换数据库具有事务性”复选框

我的问题是:当我运行主转换时,许多表并没有更新,即使并没有错误消息。转换完成后,这些表也将保持锁定状态,直到我退出。受此影响的表可能会不时发生变化——有时有很多,有时只有一个,有时一个也没有。我没有发现任何模式


我做错什么了吗?如何防止这种情况发生?

Kettle没有高级数据库事务管理功能(community Edition甚至没有“使转换数据库事务化”)。在小事务范围内处理整个数据时,很难将其分解成小块。为什么不准备所有数据并将其移动到数据库临时表中,然后在数据库级别上使用内部数据库事务移动数据,以满足您的需要。@simar感谢您的评论。我认为社区版确实有事务选项,因为我正在运行它。您关于将数据移动到临时表中,然后让DBMS处理它的建议很有趣,我将对此进行研究。谢谢