前两天有位朋友在QQ群问了一个问题,背景如下:
继续问后,有如下回复:
1、对方服务器连接无问题。
3、tnsping正常。
4、对方服务器没有设置IP信任。
5、windows 2003 server,Oracle 10.1.0.2.0
但从客户端sqlplus就是超时,无法连接。
首先,看下ORA-12170的定义:
oerr ora 12170
大致意思就是因网络或系统问题超时。
然后建议他能sqlnet.ora添加trace配置,看下sqlplus的跟踪:
TRACE_LEVEL_CLIENT=16
TRACE_FILE_CLIENT=CLIENT
TRACE_TIMESTAMP_CLIENT=ON
trace_directory_client=一个路径
但此时反馈说服务端的支持人员已经开启了Oracle共享连接,现在可以sqlplus。
现在问题就出来了,什么是Oracle共享连接?做了什么配置就可以从客户端访问了?为什么会出现这个问题?
总结来说,这个问题是和Oracle运行于Windows平台相关的。对于运行于Windows平台的,从客户端发起一个连接请求时,服务端监听会让客户端重定向另外一个随机端口。既然是一个随机端口,那么防火墙自然不会允许这个连接。因此会出现从客户端可以telnet监听端口,但sqlplus就是超时,无法连接。究其原因就是由于客户端真正和Oracle线程通信时使用的随机端口会被防火墙拒绝。这种情况只会发生在Windows平台,因为UNIX之类的平台是默认支持端口共享的,不会出现端口被防火墙拒绝的现象。
可行的解决方案有两种,
1. 使用包含内建SQL*Net代理的防火墙。
流程:
1. 连接代理,将连接传给监听。
2. 发送客户端重定向地址。
3. 通过代理连接重定向地址。
4. Oracle接受连接。
firewall
||
+------+ <--------2--------||-------2------ +---------+
|client| || |listener |(port=1521)
+------+ --------1------> proxy ----1------> +---------+
A \ /||\
| \---------3-------/ || \-----3------> +---------+
| || | oracle |(port=xxxx)
+--------------4---------||-------4------- +---------+
2. 升级数据库到8.0.x以上,设置注册表中USE_SHARED_SOCKET变量值为TRUE。
监听器会在“listener.ora”文件中指定的地址上绑定和创建一个socket。在这个socket中,监听器的监听状态是ACTIVE。当监听器接收连接请求时,监听器会在监听端口派生一个Oracle线程。这种情况会反复产生,以至于最后形成了一个监听器和一些已建立的连接都在使用1521端口的闭环。
+--------------------+
| |
| This square represents
| a listening socket for |
| port 1521. |
|
| = oracle thread
| = listener |
| |
+--------------------+
从10.2以上的,USE_SHARED_SOCKET就已经是默认值为TRUE了,无需再修改。
MOS的124140.1文章详细介绍了这部分内容,翻译原文如下:
目的:
C:\>netstat -an Active Connections Proto Local Address Foreign Address State TCP 0.0.0.0:1521 0.0.0.0:0 LISTENING TCP 198.51.100.9:1521 198.51.100.6:55769 ESTABLISHED TCP 198.51.100.9:1521 198.51.100.91:13452 ESTABLISHED TCP 198.51.100.9:1521 198.51.100.92:13203 ESTABLISHED TCP 198.51.100.9:1521 198.51.100.92:13202 ESTABLISHED TCP 198.51.100.9:1521 203.0.113.166:12331 ESTABLISHED TCP 198.51.100.9:1521 203.0.113.10:12123 ESTABLISHED TCP 198.51.100.9:1521 203.0.113.10:11252 ESTABLISHED TCP 198.51.100.9:1521 192.0.2.22:14524 ESTABLISHED TCP 198.51.100.9:1521 192.0.2.20:13524 ESTABLISHED TCP 198.51.100.9:1521 192.0.2.102:13452 ESTABLISHED TCP 198.51.100.9:1521 192.0.2.121:1342 ESTABLISHED
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7192724/viewspace-1205016/ ,如需转载,请注明出处,否则将追究法律责任。