Kettle工具复制单表向导无法读取源数据库表

Kettle工具复制单表向导无法读取源数据库表

【问题来源】
今天有一项工作任务需要把一个数据库的数据连同表结构一起同步到另一个数据库,于是我选择使用Kettle工具中的【复制单表/多表向导】来操作,但使用过程中遇到了个坑:kettle无法读取到源数据库的表格。经过几个小时的反复测试排查,最终找到了问题所在,并成功解决。以下是解决方案:

1. 打开【复制单表/多表向导工具】

image.png

2. 选择源数据库、目标数据库

image.png

3. 此时可以看到,可获取的表列表是空白的,难道是数据库连接有问题?继续排查。

image.png

4. 可以看到,数据库连接是正常的,能获读取到里面的表空间和表。

image.png

5. 实在找不到其他的配置问题,我把目标转向登录用户,会不会是登录的用户是系统管理员,没有直属表空间这个问题呢?

image.png

6. 更换登录用户,直接用目标表空间的所有者用户登录尝试。

image.png

7. 获取表成功!由此验证了我前面的猜测。

image.png

【总结】

最后做个总结,sys账号虽然是oracle数据库权限最大的管理员,可以读写所有表空间的表数据,但并不是所有表空间的所有者。在使用kettle工具【复制单表/多表向导】时,必须使用目标表空间的所有者用户登录连接数据库,才能获取到目标表空间下的表数据。

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.keikei.vip/archives/kettle工具复制单表向导无法读取源数据库表的问题解决方案