2017-08-18 36 views
0

私はジェンキンスを経由していますが、現時点では、私の仕事の最後のステップでリモートのOracleデータベースに接続しようとしています。Jenkins - Sqlplus plugin:Oracleデータベースに接続できません。 TNSNAMES.ORAがありません

ORACLE_HOMEやLD_LIBRARY_PATHなどの環境変数は正常であり、sqlplusは正しく実行されています。接続文字列もOKです。同じマシンのコマンドラインで同じパラメータを使用して接続しますが、ジョブ内では使用できません。ここで

トレースです:

SQL*Plus: Release 12.2.0.1.0 Production 

testing directory /usr/lib/oracle/12.2/client64 
-------------------------------------------------------------------------- 
Using ORACLE_HOME =/usr/lib/oracle/12.2/client64 
-------------------------------------------------------------------------- 
Running defined script on dweb/********@10.10.20.52:1521/******* 
Temp script: /tmp/temp-script-15029865208104609348613017529755.sql 
-------------------------------------------------------------------------- 
ORACLE_HOME = /usr/lib/oracle/12.2/client64 
LD_LIBRARY_PATH = /usr/lib/oracle/12.2/client64/lib:/usr/lib/oracle/12.2/client64 
java.lang.RuntimeException: TNSNAMES.ORA missing! 
    at org.jenkinsci.plugins.sqlplusscriptrunner.SQLPlusRunner.invoke(SQLPlusRunner.java:231) 
    at org.jenkinsci.plugins.sqlplusscriptrunner.SQLPlusRunner.invoke(SQLPlusRunner.java:16) 
    at hudson.FilePath.act(FilePath.java:998) 
    at hudson.FilePath.act(FilePath.java:976) 
    at org.jenkinsci.plugins.sqlplusscriptrunner.SQLPlusRunnerBuilder.perform(SQLPlusRunnerBuilder.java:98) 
    at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:735) 
    at hudson.model.Build$BuildExecution.build(Build.java:206) 
    at hudson.model.Build$BuildExecution.doRun(Build.java:163) 
    at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:490) 
    at hudson.model.Run.execute(Run.java:1735) 
    at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43) 
    at hudson.model.ResourceController.execute(ResourceController.java:97) 
    at hudson.model.Executor.run(Executor.java:405) 
ERROR: TNSNAMES.ORA missing! 
Finished: FAILURE 

私も同じ結果とORACLE_SID環境VARを設定してみました。何か案が?

記録のために:ドッキングウィンドウの画像

+0

が鳴ります。 – Boneist

+0

しかし、私はtnsnames.oraファイルがありません。私が接続しようとしているデータベースは遠隔のデータベースなので、ローカルのoracle管理者パラメータはありません – kaladan

答えて

0

https://wiki.jenkins.io/display/JENKINS/SQLPlus+Script+Runner+Plugin

から実行ジェンキンスが、それはこのプラグイン(SQLPlusRunner)することができますが、ローカル・ネーミング(TNS)をサポートしていますか? その場合、あなたは今、あなたは、接続

instance: <MY_TNS_ALIAS> 

TIPを構成することができ、お気に入りフォルダに配置し、export TNS_ADMIN=/my/favorite/folder

cat tnsnames.ora 
MY_TNS_ALIAS=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myip)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MY_SERVICE_NAME))) 

を設定するtnsnames.oraファイルを作成する必要があります:あなたが持っていることを確認してくださいジェンキンを続行する前にsqlplus(CLI)を使用して正常に接続してください。

ご使用のシナリオでは、Oracle Runtime Clientをインストールする方が適していると思います。 Instantclientは動作します。

運が良かった!あなたはおそらく(http://www.orafaq.com/wiki/TNS_ADMIN)[tnsnames.oraファイルが入っているディレクトリにTNS_ADMINを設定する]に必要のよう

Bjarte

+1

私はほとんど同じソリューションを書いていました。ありがとう! プラグインでは、不要な場合でも$ ORACLE_HOMEパス(または$ ORACLE_HOME/network/admin)に "tnsnames.ora"ファイルが存在する必要があります。 私はTNS_ADMINをエクスポートする必要はなく、私の "tnsnames.ora"は空でした。 – kaladan

関連する問題