我正在通过jenkins学习,但在我工作的最后一步,我被困在试图连接到远程oracle数据库的时刻。
像ORACLE_HOME和LD_LIBRARY_PATH这样的环境变量运行正常,sqlplus运行正常。连接字符串似乎也没问题,我希望在同一台机器上通过命令行使用相同的参数进行连接,但不是在作业内部。
下面是跟踪信息:
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环境变量,也得到了相同的结果。有什么想法吗?
郑重声明:从docker镜像运行jenkins
发布于 2017-08-18 18:11:34
https://wiki.jenkins.io/display/JENKINS/SQLPlus+Script+Runner+Plugin
是不是这个插件(SQLPlusRunner)只支持本地命名(TNS)?在这种情况下,您必须在收藏夹中创建一个tnsnames.ora文件并设置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)))现在,您可以配置连接
instance: <MY_TNS_ALIAS>提示:在继续使用jenkins之前,请确保通过sqlplus (CLI)建立了成功的连接。
对于您的场景,我认为安装Oracle Runtime Client将是一个更好的选择。不过,Instantclient还是可以工作的。
祝你好运!
比亚特
发布于 2019-08-15 17:36:09
我知道这是一个老帖子,但这可能会让某些人受益。在我的例子中,我确实需要将连接字符串添加到tnsnames.ora,但不需要导出TNS_ADMIN。
https://stackoverflow.com/questions/45751351
复制相似问题