【问题标题】:Unable to connect to Oracle 12c from client machine无法从客户端计算机连接到 Oracle 12c
【发布时间】:2016-10-03 13:29:17
【问题描述】:

我现在花了 3 天时间试图弄清楚为什么我无法从客户端计算机连接到我的 Oracle 12 数据库。我已经阅读了很多文章和谷歌搜索,但还没有找到解决方案。我已经尝试了一切可能并且已经知道了。所以我希望有人能指出我正确的方向。

这里有一些细节:

  1. 安装了 Oracle 12c 的 Win7 x64。
  2. Windows Server 2012 R2(客户端,是的,这个设置并不理想。稍后会解释原因)。
  3. Windows Server 2012 R2(域控制器)
  4. 所有机器都是虚拟机并且是域的一部分。
  5. 所有虚拟机都在 ESXI 6.0 下运行

我可以毫无问题地执行以下操作:

  1. 登录oracle服务器。

    ORCL 是我的 oracle 实例(全局数据库标识符)。

    6.1 运行tnsping orcl

    6.2 lsnrctl 状态(启动并运行)

    6.3 从 Windows 服务管理单元停止并重新启动侦听器服务。

    6.4 sqlplus 系统/xyz@orcl

     Connects w/o any problems.
    

    6.5 Oracle SQL Developer 可以连接到ORCL

    6.6 可以ping 客户端机器。

但是我不能执行以下操作:

  1. 登录到客户端机器

    7.1 将 tnsnames.ora 从 oracle 服务器复制到此客户端计算机并放置在应位于的 [ORACLE_HOME]\network\admin 下。将“localhost”替换为 oracle sserver IP。

    7.2 使用sqlplus system/xyz@orcl 或Oracle SQL Developer 连接

     I get TNS: no listener found.
    

    7.3可以ping通oracle服务器。

    7.4 tnsping orcl(失败)

    7.4 已经禁用了 oracle 服务器上的所有防火墙(域、私有和公共)。 防火墙或端口应该没有任何问题。

无论我做什么,我都无法从客户端计算机连接。有人可以告诉我我做错了什么吗?附带说明一下,我无法在 Win2012R2 上安装 Oracle 12c。所以我安装在Win7x64上。但最终 所有虚拟机都将在 Windows Server 2012R2 上运行。这个设置是我的家庭实验室。

谢谢!

【问题讨论】:

  • 在问题中包含lsnrctl status 的输出可能很有用。

标签: oracle11g oracle-sqldeveloper oracle12c tnsnames tnsping


【解决方案1】:

将“localhost”替换为 oracle sserver IP

看起来监听器只在 localhost (127.0.0.1) 上监听;您可以使用lsnrctl statusnetstat -an | find "1521"(或您的实际端口号,如果您不使用默认值)来确认。

它没有侦听服务器的外部 IP 地址,因此当您尝试连接到该 IP 上的 post 1521(或您配置的任何内容)时,没有任何东西在侦听 - 这就是您得到“找不到侦听器”的原因.

您需要将您的listener.ora 修改为listen to both localhost and the server IP address,或 收听外部地址。但后者有副作用 - 您现有的连接和 tnsnames.ora 条目需要更改以引用该地址(或者,即使它是静态的,解析为该地址的 DNS 名称),并且您的数据库可能需要通过LOCAL_LISTENER 初始化参数对其进行修改,使其知道要注册的侦听器地址。更改listener.ora 后,您需要弹回监听器,然后您可以再次检查netstat

【讨论】:

  • 我记得当我运行 lsnrctl 状态时看到 127.0.0.1 但是当我检查我的 listener.ora、sqlnet.ora 和 tnsnames.ora 时,我没有看到这个 IP,也不知道那是从哪里来的。听起来你对我的问题是正确的。我回家后会发布 lsnrctl status 的结果。我可能需要一点手在这里。谢谢!
  • 我认为如果没有指定地址,监听器默认为localhost;或者它可能只是指 localhost 而不是 127.0.0.1。您的 hosts 文件中也可能有一个名称不同但仍解析为 127.0.0.1 的条目,但这不太可能。
  • 你能发布一个“listener.ora”的样例来解决我的问题吗?在您之前的回复中,您指出我需要配置我的“listener.ora”,以便它同时侦听 localhost 和外部 IP。我到底需要在这里做什么?在我试图解决我的问题时,我已经从最初的 oracle 安装中备份了 listener.ora、sqlnet.ora 和 tnsnamesora 文件。因此,我将恢复这些并应用您建议的更改。非常感谢!
  • 已经有一个指向较早答案的链接,显示在您的listener.ora 中设置两个地址。 TBH 我想知道这是否应该作为副本关闭...
  • 抱歉没有意识到这是一个网址。我刚检查过。看起来我所要做的就是为 oracle 服务器添加一个带有我的外部 IP 的新 ADDRESS 行。我回家后会测试一下。再次感谢。
猜你喜欢
  • 1970-01-01
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
  • 2016-01-18
  • 1970-01-01
  • 2020-02-09
  • 2019-06-24
  • 2011-03-03
相关资源
最近更新 更多