1.情况:
昨日迁移BIEE服务器,IP地址也变更了,导致一大堆kettle transaction中的DB连接信息都需要修改,用脚本批量修改后,直接在VNC 上kettle spoon 可视化界面,运行一个transaction ,运行没问题。后在控制台,用命令行调用。却抛出异常:
INFO 20-03 18:40:07,868 - delete_all_wireless_table - This transformation can be replayed with replay date: 2013/03/20 18:40:07
ERROR 20-03 18:40:29,006 - Execute SQL script - An error occurred, processing will be stopped:
Error occured while trying to connect to the database
Error connecting to database: (using class oracle.jdbc.driver.OracleDriver)
Io exception: The Network Adapter could not establish the connection
ERROR 20-03 18:40:29,006 - Execute SQL script - Error initializing step [Execute SQL script]
ERROR 20-03 18:40:29,006 - delete_all_wireless_table - Step [Execute SQL script.0] failed to initialize!
INFO 20-03 18:40:29,007 - Execute SQL script - Finished reading query, closing connection.
ERROR 20-03 18:40:29,007 - delete_all_wireless_table - Unable to prepare for execution of the transformation
ERROR 20-03 18:40:29,008 - delete_all_wireless_table - org.pentaho.di.core.exception.KettleException:
We failed to initialize at least one step. Execution can not begin!
org.pentaho.di.trans.Trans.prepareExecution(Trans.java:740)
org.pentaho.di.trans.Trans.execute(Trans.java:354)
org.pentaho.di.job.entries.trans.JobEntryTrans.execute(JobEntryTrans.java:971)
org.pentaho.di.job.Job.execute(Job.java:471)
org.pentaho.di.job.Job.execute(Job.java:600)
org.pentaho.di.job.Job.execute(Job.java:600)
org.pentaho.di.job.Job.execute(Job.java:344)
org.pentaho.di.job.Job.run(Job.java:282)
百般调试、google、查阅kettle手册才知道 kettle有个资源库的概念。
2.kettle 资源库
一个 Kettle 资源库可以包含那些转换信息,这意味着为了从数据库资源中加载一个转换,你必须连接相应的资源库。要实现这些,你需要在资源库中定义一个数据库连接,你可以在Spoon 启动的时候,利用资源库对话框来定义。
关于资源库的信息存储在文件 “reposityries.xml”中,它位于你的缺省home 目录的隐藏目录“.kettle”中。如果是windows 系统,这个路径就是c:\Documents andSettings\<username>\.kettle。如果你不想每次在Spoon 启动的时候都显示这个对话框,你可以在“编辑/选项”菜单
下面禁用它。
admin 用户的缺省密码也是admin。如果你创建了资源库,你可以在“资源库/编辑用户”菜单下面修改缺省密码。
果断将配置文件shared.xml 中的数据库连接信息改掉。具体配置文件如下:
db.cache
kettle.properties
shared.xml
xulSettings.properties
命令行调用,OK。解决问题。
命令行调用方式:
/data/kettle/kitchen.sh /norep /file /data/kettle/job/FILE_ODS/wireless/job/wirelesstransjob.kjb 20130317
调用transaction
/data/kettle/pan.sh -file=/data/kettle/job/FILE_ODS/wireless/transformation/WlPvDetail.ktr