我花了3天时间试图弄清楚为什么我无法从客户端计算机连接到我的Oracle 12数据库。我已经阅读了很多文章和谷歌搜索,但还没有找到解决方案。我已经尽了一切可能并且已经知道了。所以我希望有人能指出我正确的方向。
以下是一些细节:
我可以毫无问题地执行以下操作:
登录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客户端机器。
但是我不能做到以下几点:
登录客户端计算机
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上运行。这个设置是我的家庭实验室。
谢谢!
答案 0 :(得分:0)
用oracle sserver IP替换“localhost”
看起来监听器只监听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
。