标签:
前两天在一个朋友QQ集团提出了一个问题。背景例如,下面的:
继续问后,有例如以下回复:
1、对方server连接无问题。
3、tnsping正常。
4、对方server没有设置IP信任。
5、windows 2003 server,Oracle 10.1.0.2.0
但从clientsqlplus就是超时,无法连接。
首先,看下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共享连接?做了什么配置就能够从client訪问了?为什么会出现这个问题?
总结来说,这个问题是和Oracle执行于Windows平台相关的。
对于执行于Windows平台的。从client发起一个连接请求时,服务端监听会让client重定向另外一个随机port。既然是一个随机port。那么防火墙自然不会同意这个连接。因此会出现从client能够telnet监听port,但sqlplus就是超时。无法连接。
究其原因就是由于client真正和Oracle线程通信时使用的随机port会被防火墙拒绝。这样的情况仅仅会发生在Windows平台,由于UNIX之类的平台是默认支持port共享的,不会出现port被防火墙拒绝的现象。
可行的解决方式有两种。
1. 使用包括内建SQL*Net代理的防火墙。
流程:
1. 连接代理。将连接传给监听。
2. 发送client重定向地址。
3. 通过代理连接重定向地址。
4. Oracle接受连接。
2. 升级数据库到8.0.x以上,设置注冊表中USE_SHARED_SOCKET变量值为TRUE。
监听器会在“listener.ora”文件里指定的地址上绑定和创建一个socket。在这个socket中,监听器的监听状态是ACTIVE。
当监听器接收连接请求时。监听器会在监听port派生一个Oracle线程。这样的情况会重复产生。以至于最后形成了一个监听器和一些已建立的连接都在使用1521port的闭环。
从10.2以上的。USE_SHARED_SOCKET就已经是默认值为TRUE了,无需再改动。
MOS的124140.1文章具体介绍了这部分内容,翻译原文例如以下:
有一点不同的就是。在防火墙和数据库之间安装了连接管理器Connection Manager。而且安装防火墙时同意他能够连接到连接管理器。那么防火墙就不须要Oracle Net或SQL*Net了。
这个參数在Windows NT 4.0(SP3或更高),Windows 2000,或Winsock V2支持的更高版本号中可以设置。
通过该參数,也可以使用仅支持port过滤以及没有SQL*Net代理(至少是专用连接)的防火墙。多线程server(MTS)仍旧须要将连接重定向到一个动态port,因此也须要SQL*Net代理。
Windows 2000以上,也能够使用控制面板的系统button。但环境变量须要点击”高级”button来找到并设置。
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
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Windows平台Oracle使用USE_SHARED_SOCKET角色
标签:
原文地址:http://www.cnblogs.com/bhlsheji/p/4714509.html