Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java连接到Oracle不可靠_Java_Oracle - Fatal编程技术网

从Java连接到Oracle不可靠

从Java连接到Oracle不可靠,java,oracle,Java,Oracle,我是Java新手,正在尝试从redhat Linux机器建立到Oracle数据库的连接。我已经让连接工作,可以执行一个简单的sql脚本,但连接只工作约1在3次。它给出的错误和代码如下。这很可能是我们网络的一个问题,但在我提出支持案例之前,我希望有更多的了解。有人知道为什么在连接中指定了“someserver”时,ssdb0255n21 oravip会出现“名称或服务未知”的错误吗 Exception in thread "main" java.sql.SQLRecoverableExceptio

我是Java新手,正在尝试从redhat Linux机器建立到Oracle数据库的连接。我已经让连接工作,可以执行一个简单的sql脚本,但连接只工作约1在3次。它给出的错误和代码如下。这很可能是我们网络的一个问题,但在我提出支持案例之前,我希望有更多的了解。有人知道为什么在连接中指定了“someserver”时,ssdb0255n21 oravip会出现“名称或服务未知”的错误吗

Exception in thread "main" java.sql.SQLRecoverableException: IO Error: The Network Adapter could not establish the connection
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:673)
    at oracle.jdbc.driver.PhysicalConnection.<init>(PhysicalConnection.java:715)
    at oracle.jdbc.driver.T4CConnection.<init>(T4CConnection.java:385)
    at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:30)
    at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:564)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:187)
    at OracleTest.main(OracleTest.java:19)
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:445)
    at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:464)
    at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:594)
    at oracle.net.ns.NSProtocolStream.negotiateConnection(NSProtocolStream.java:214)
    at oracle.net.ns.NSProtocol.connect(NSProtocol.java:263)
    at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1360)
    at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:486)
    ... 7 more
Caused by: java.net.UnknownHostException: ssdb0255n21-oravip: Name or service not known
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:894)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1286)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1239)
    at java.net.InetAddress.getAllByName(InetAddress.java:1155)
    at java.net.InetAddress.getAllByName(InetAddress.java:1091)
    at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:117)
    at oracle.net.nt.ConnOption.connect(ConnOption.java:133)
    at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:411)
    ... 13 more
我将ORACLE_HOME设置为/usr/lib/ORACLE/10.2.0.5/client64/,并在/usr/lib/ORACLE/10.2.0.5/client64/network/admin中创建了ldap.ora和sqlnet.ora文件。其内容包括:

sqlnet.ora

NAMES.DIRECTORY_PATH = (LDAP,TNSNAMES)
ldap.ora

DIRECTORY_SERVERS = (OID.GLB.IN.companyname.COM.AU::3131)
DEFAULT_ADMIN_CONTEXT = "dc=in,dc=companyname,dc=com,dc=au"
DIRECTORY_SERVER_TYPE = OID
它似乎创造了tnsnames.ora本身

ORA11 =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = ORA11)
 )
)

我不想回答自己的问题,但事实证明,这不是甲骨文的问题。这是一个DNS解析失败的问题。我将ssdb0255n21 oravip主机放入/etc/hosts文件中,问题立即消失。我怀疑某个地方的负载平衡器正在将50%的DNS查找定向到返回错误的DNS服务器。我们这里有一个非常复杂的网络:-)

您的TNSNAMES.ORA的内容是什么java.net.UnknownHostException:ssdb0255n21或vip:Name或service not known`表示未正确设置。另外,请尝试使用
tnsping ssdb0255n21或vip
,看看是否可以连接。谢谢您的回复。我已经用这些细节更新了我的答案。我已经删除了我们公司的详细信息,所以如果有任何不一致的地方,很可能是我的错别字。我的盒子上没有tnsping命令。您的TNSNAMES.ORA设置不正确。服务名称为
ORA11
,您正在尝试连接到ssdb0255n21 oravip。注意,您的oracle\bin文件夹中可能有tnsping。注意,我在过去也遇到过类似的问题,有时是因为您有太多可用的接口。禁用其中一个接口。那么我应该在tnsnames.ora中添加什么呢?我搜遍了整个机器,不知什么原因都没有找到。我刚刚在bin文件夹中找到了sqlplus和genezi。忘了提到我试过禁用除以太网适配器之外的所有网络适配器,但仍然没有任何乐趣。
ORA11 =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = ORA11)
 )
)