kettle 數據庫連接中斷重置


項目適用kettle作為etl工具,源數據庫為mysql庫,目標庫為oracle。在持續的循環調度中,經常發現oracle的數據庫連接中斷,需要重置。

具體報錯信息如下:
INFO  26-12 23:40:13,220 - Kitchen - Logging is at level : Basic logging
INFO  26-12 23:40:13,221 - Kitchen - Start of run.
INFO  26-12 23:40:13,374 - WAN_PT_OLD_SJ_DAY_ADD - Start of job execution
ERROR 26-12 23:42:50,832 - WAN_PT_OLD_SJ_DAY_ADD - A serious error occurred during job execution: org. pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Invalid JNDI connection ETL : IO Error: Connection reset


INFO  26-12 23:42:50,837 - Kitchen - Finished!
ERROR 26-12 23:42:50,837 - Kitchen - Finished with errors
INFO  26-12 23:42:50,838 - Kitchen - Start=2013/12/26 23:40:13.221, Stop=2013/12/26 23:42:50.837
INFO  26-12 23:42:50,838 - Kitchen - Processing ended after 2 minutes and 37 seconds (157 seconds total).
 
將oracle會話超時不設限,並且將機器的防火牆關閉后,問題仍然存在。
網上查閱資料后發現主要問題是oracle 11g 和centos 64的不兼容bug造成的。

可能原因是1:jvm試圖展示/tmp文件夾下的內容,但是/tmp文件內內容過多超時;
                2:函數nextBytes(byte[]) 在linux上使用/dev/random計數時,導致登錄中斷從而超時
解決方法,在sh文件中的java 命令行中增加參數:-Djava.security.egd=file:/dev/../dev/urandom 

如在kitchen.sh/pan.sh文件的如下修改后問題即可解決:
 
1.如果顯示內存溢出,即可如上圖在javamaxmem處增加內存即可,本機設置為10g,一般不超過內存一半即可。
2.如果連接mysql顯示時間超時,將mysql數據庫的timeout參數調大即可,自己設置如下:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM