我花了3天时间试图弄清楚为什么我无法从客户端计算机连接到我的Oracle 12数据库 . 我已经阅读了很多文章和谷歌搜索,但还没有找到解决方案 . 我已经尽了一切可能并且已经知道了 . 所以我希望有人能指出我正确的方向 .
以下是一些细节:
-
安装了Oracle 12c的Win7 x64 .
-
Windows Server 2012 R2(客户端,是的,此设置并不理想 . 稍后将解释原因) .
-
Windows Server 2012 R2(域控制器)
-
所有计算机都是VM,是域的一部分 .
-
所有VM都在ESXI 6.0下运行
我可以做任何事情没有任何问题:
- 登录oracle服务器 .
ORCL是我的oracle isntance(全局数据库标识符) .
6.1运行tnsping orcl
6.2 lsnrctl状态(启动和运行)
6.3从Windows服务管理单元停止并重新启动列表器服务 .
6.4 sqlplus system / xyz @ orcl
Connects w/o any problems.
6.5 Oracle SQL Developer可以连接到ORCL
6.6可以ping客户端机器 .
但是我不能做以下事情:
- 登录到客户端计算机
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服务器上的所有防火墙(域,私有和公共) . 防火墙或端口应该没有任何问题 .
无论我做什么,我都无法从客户端机器连接 . 有人能告诉我我做错了什么吗?另外,我无法在Win2012R2上安装Oracle 12c . 所以我安装在Win7x64上 . 但最终所有VM都将在Windows Server 2012R2上运行 . 这个设置是我的家庭实验室 .
谢谢!
1 回答
看起来监听器只监听localhost(127.0.0.1);您可以使用
lsnrctl status
或netstat -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
.