首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jenkins - Sqlplus插件:无法连接到oracle数据库。缺少TNSNAMES.ORA

Jenkins - Sqlplus插件:无法连接到oracle数据库。缺少TNSNAMES.ORA
EN

Stack Overflow用户
提问于 2017-08-18 15:52:17
回答 2查看 2.4K关注 0票数 1

我正在通过jenkins学习,但在我工作的最后一步,我被困在试图连接到远程oracle数据库的时刻。

像ORACLE_HOME和LD_LIBRARY_PATH这样的环境变量运行正常,sqlplus运行正常。连接字符串似乎也没问题,我希望在同一台机器上通过命令行使用相同的参数进行连接,但不是在作业内部。

下面是跟踪信息:

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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

代码语言:javascript
复制
cat tnsnames.ora
MY_TNS_ALIAS=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=myip)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=MY_SERVICE_NAME)))

现在,您可以配置连接

代码语言:javascript
复制
instance: <MY_TNS_ALIAS>

提示:在继续使用jenkins之前,请确保通过sqlplus (CLI)建立了成功的连接。

对于您的场景,我认为安装Oracle Runtime Client将是一个更好的选择。不过,Instantclient还是可以工作的。

祝你好运!

比亚特

票数 2
EN

Stack Overflow用户

发布于 2019-08-15 17:36:09

我知道这是一个老帖子,但这可能会让某些人受益。在我的例子中,我确实需要将连接字符串添加到tnsnames.ora,但不需要导出TNS_ADMIN。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45751351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档