kettle 資料庫連線中斷重置
阿新 • • 發佈:2019-02-03
專案適用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引數調大即可,自己設定如下:
具體參考如下連結:
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.
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引數調大即可,自己設定如下:
具體參考如下連結: