【问题标题】:Jenkins - Sqlplus plugin: Cannot connect to oracle database. TNSNAMES.ORA missingJenkins - Sqlplus 插件:无法连接到 oracle 数据库。 TNSNAMES.ORA 丢失
【发布时间】:2017-08-18 07:52:17
【问题描述】:

我正在使用 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

【问题讨论】:

标签: oracle jenkins sqlplus


【解决方案1】:

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 运行时客户端会是更好的选择。 Instantclient 会工作。

祝你好运!

比尔特

【讨论】:

  • 我写了几乎相同的解决方案。谢谢!即使您不需要,该插件似乎也需要在 $ORACLE_HOME 路径(或 $ORACLE_HOME/network/admin)中存在“tnsnames.ora”文件。我不必导出 TNS_ADMIN,我的“tnsnames.ora”是一个空的。
【解决方案2】:

我知道这是一个旧线程,但这可能会使某人受益。在我的情况下,我确实需要将连接字符串添加到 tnsnames.ora,但不需要导出 TNS_ADMIN。

【讨论】:

    猜你喜欢
    • 2013-09-15
    • 2013-03-17
    • 2016-09-03
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-02-25
    相关资源
    最近更新 更多