无法从客户端计算机

时间:2016-06-03 12:59:47

标签: oracle11g oracle-sqldeveloper oracle12c tnsnames tnsping

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

以下是一些细节:

  1. 安装了Oracle 12c的Win7 x64。
  2. Windows Server 2012 R2(客户端,是的,此设置并不理想。稍后会解释原因。)
  3. Windows Server 2012 R2(域控制器)
  4. 所有计算机都是VM,并且是域的一部分。
  5. 所有VM都在ESXI 6.0下运行
  6. 我可以毫无问题地执行以下操作:

    1. 登录oracle服务器。

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

      6.1运行tnsping orcl

      6.2 lsnrctl status(启动并运行)

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

      6.4 sqlplus system / xyz @ orcl

       Connects w/o any problems.
      

      6.5 Oracle SQL Developer可以连接到ORCL

      6.6可以ping客户端机器。

    2. 但是我不能做到以下几点:

      1. 登录客户端计算机

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

        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服务器上的所有防火墙(域,私有和公共)。          防火墙或端口应该没有任何问题。

      2. 无论我做什么,我都无法从客户机连接。有人能告诉我我做错了什么吗?另外,我无法在Win2012R2上安装Oracle 12c。所以我安装在Win7x64上。但最终 所有VM都将在Windows Server 2012R2上运行。这个设置是我的家庭实验室。

        谢谢!

1 个答案:

答案 0 :(得分:0)

  

用oracle sserver IP替换“localhost”

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

它没有侦听服务器的外部IP地址,所以当你尝试连接到该IP上的1521(或任何你配置的)时,没有任何东西在监听 - 这就是为什么你得到“没有找到监听器”

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