【问题标题】:How to fetch data from oracle data base from another computer如何从另一台计算机从oracle数据库中获取数据
【发布时间】:2014-07-19 12:35:05
【问题描述】:

我正在尝试在我的系统中执行一个基于 java swing 构建的简单桌面应用程序。 此应用程序从计算机 A 中的 oracle 数据库中获取数据。

我在计算机 A 中进行了开发并构建了它的 jar 并将 jar 保存在另一个系统中。 我已经启动了 oracle 的所有服务并在两个系统之间创建了一个 ad hoc 网络,但是我无法从另一台计算机执行应用程序。我用谷歌搜索了很多,并做了提到的改变。我仍然收到 TNS 监听器的相同错误。

IOException: The network adapter could not establish the connection.

最后我想把我的代码放在这里。请看下面的代码:

Class.forName("oracle.jdbc.driver.OracleDriver");
Connection connection =     
    DriverManager.getConnection("jdbc:oracle:thin:@//xxx.xxx.xxx.xxx:1521/XE"
                                 ,"system"
                                 ,"system"    );

请帮帮我。

我也尝试过修改 tnsnames.ora 文件,但没有帮助。任何人都可以帮我解决这个问题。

【问题讨论】:

  • 你能ping通目标服务器吗?然后可以tnsping目标数据库吗?

标签: oracle listener tns


【解决方案1】:

检查 listener.ora 文件 - 服务绑定的 IP 地址是什么,即这个文件中指定的 IP 地址是什么?如果是 127.0.0.1,这将解释为什么它在计算机 A 上工作但在 B 上工作。

如果是这种情况,您应该首先停止监听器服务,备份 listener.ora,编辑 listener.ora,将 IP 地址更改为计算机 A 的适当 IP 地址(可从计算机 B 访问),重新启动监听器,然后重试。

使用 tnsping 测试连接是否正常,如果您没有 TNS ping 您可以尝试“Telnet 主机名端口”(例如 telnet 计算机-A 1521),如果它返回空白屏幕并在左上角闪烁光标,则该服务起来了。

【讨论】:

  • 您好,我尝试了这个解决方案,但没有成功,我打开了 listener.ora 文件并进行了以下更改。 LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE)) (ADDRESS = (PROTOCOL = TCP)(HOST = XXX.XXX.XXX.XXX)(PORT =1521))))我遇到了同样的错误,当我尝试使用 telnet 主机名 1521 时,它返回错误,说“连接失败”。下面是我的 tnsnames.ora 文件更改 XE =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST=xxx.xxx.xxx.xxx)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = XE ) ))
  • 您可以在您的计算机 A 上“telnet localhost 1521”吗?进行更改后,您是否重新启动了侦听器?防火墙是否正在运行阻止端口 1521 上的入站连接,或者您是否需要在防火墙上为 TNS 添加例外?试过禁用防火墙吗?如果您使用 Java 瘦,则 TNSNAMES.ORA 应该无关紧要,因为您直接在连接字符串中提供相关详细信息 - 这就是瘦驱动程序不需要安装 Oracle 客户端的原因。也许如果您发布以下信息会有所帮助 - 两台 PC、listener.ora、netstat -an 上的 ipconfig 输出。
  • 嗨,我也试过这个解决方案。下面是 Listener.ora 文件。 SID_LIST_LISTENER =(SID_LIST =(SID_DESC =(SID_NAME = PLSExtProc) (ORACLE_HOME = F:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc))(SID_DESC =(SID_NAME = CLRExtProc) (ORACLE_HOME = F:\oraclexe\app\oracle\product\10.2.0\server) (PROGRAM = extproc))) LISTENER =(DESCRIPTION_LIST =(DESCRIPTION =(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))(ADDRESS = ( PROTOCOL = TCP)(HOST = 192.168.137.220)(PORT = 1521)))) DEFAULT_SERVICE_LISTENER = (XE)
  • telnet localhost 1521 的输出:F:\Users\saishpole>telnet localhost 1521 Connecting To localhost...无法在端口 1521 上打开与主机的连接:连接失败 IPConfig:计算机 B- --192.168.137.1 IPConfig: Computer A----192.168.137.220 另外,在 listner.ora 文件中进行更改后,我的实际代码在计算机 A 本身中停止工作并开始给出相同的错误。在修改 listner.ora 文件之前,telnet localhost 1521 是如何工作的。
  • 另外请注意,我们已经为这两个 PCS 创建了一个 adhoce 网络来进行通信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-03-08
  • 2014-04-22
  • 1970-01-01
  • 2012-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多