我怎样才能连接到从蚂蚁使用TNSNAME Oracle数据库?(How can I connect

2019-07-29 14:55发布

我在寻找类似蚂蚁的SQL任务的东西,但将接受格式的JDBC网址:

JDBC:预言:瘦:@TNS_NAME

一个可能的方法似乎是写一个使用OracleDataSource来创建连接我自己的Ant任务,但有没有办法做到这一点直蚂蚁?

编辑:感谢您的答复迄今家伙。 我希望它能帮助,如果我更多地讨论,我发现了错误位。

我的Ant任务如下所示:

<target name="MyTarget" >
    <property name="oracle.net.tns_admin" value="/opt/oracle/product/10.2.0.1/NETWORK/ADMIN" />
    <property name="jdbc.driver" value="ojdbc5.jar" />
    <property name="jdbc.i18n.support" value="orai18n.jar" />
    <property name="jdbc.driver.class" value="oracle.jdbc.OracleDriver" />
    <path id="sql.class.path">
        <pathelement location="${jdbc.driver}" />
        <pathelement location="${jdbc.i18n.support}" />
    </path>

    <sql driver="${jdbc.driver.class}" url="jdbc:oracle:thin:@THE_TNS_NAME" userid="USER" password="PASSWORD" classpathref="sql.class.path" >
        <![CDATA[
        #SOME ARBITRARY SQL HERE
        ]]>
    </sql>
</target>

这种失败,出现错误:

值java.sql.SQLException:IO异常:指定未知主机

“:神谕:薄:@HOST:PORT:JDBC INSTANCE”与更换URL工作正常,我也可以用tnsping上面使用的TNS名称,所以我知道它是有效的。

Answer 1:

只是这个今天的工作,并偶然发现了失落的一角。 TNS的位置需要设置为系统属性,如下所示: Oracle瘦JDBC来TNS名称

要建立一个Oracle瘦JDBC连接到TNS别名(TNSNAME),请确保您的oracle.net.tns_admin系统属性传递给JVM。 它的值应该是在你的tnsnames.ora文件所在的目录。 在此之后,你可以通过TNS别名发生在JDBC URL的主机名。

例如,如果你只是试图连接到JDBC:神谕:薄:@MYDB,这是在你的tnsnames.ora文件,你会得到与IO异常的详细消息一个SQLException:指定未知主机。 如果你火起来的JVM有-Doracle.net.tns_admin = / ORACLE / 10G / NETWORK / ADMIN,或启动后使用System.setProperty(字符串,字符串),连接将被成功建立。

这样做后,我能够单独使用TNS别名连接成功。



Answer 2:

如果你的意思是你想使用的tnsnames.ora而不是Thin驱动程序“厚”的连接,那么你可以换一个电话在XML文件中在sqlplus:

<target name="myTarget">
  <!-- login.sql should have sqlcode exit so failonerror will fail build -->
  <exec executable="sqlplus" failonerror="true">
        <arg value="${userid}/${password}@${tnsalias}"/>
        <arg value="@myScript"/>
  </exec>
</target>

...的基本思想。

[其中userid,密码和tnsalias在你的属性定义文件]

显然,这意味着你必须至少安装了即时客户端堆栈。



Answer 3:

因为我们现在不还,确切的问题是什么,我只能假设,这可能帮助:

http://theblasfrompas.blogspot.com/2008/04/jdbc-thin-connection-using-tnsnamesora.html



Answer 4:

你确定它的网络/ ADMIN,而不是网络/管理员?

Unix文件系统通常是区分大小写的 - (假设它是在Unix)。



文章来源: How can I connect to an Oracle database from Ant using the tnsname?
标签: oracle ant jdbc