Windows平台Oracle使用USE_SHARED_SOCKET角色
前两天在一个朋友QQ集团提出了一个问题。背景例如,下面的:
继续问后,有例如以下回复:
1、对方server连接无问题。
3、tnsping正常。
4、对方server没有设置IP信任。
5、windows 2003 server,Oracle 10.1.0.2.0
但从clientsqlplus就是超时,无法连接。
首先,看下ORA-12170的定义:
oerr ora 12170
the allotted time interval. This may be a result of network or system delays; or this may indicate that a malicious client is trying to cause a Denial of Service attack
on the server.
// *Action: If the error occurred because of a slow network or system, reconfigure one or all of the parameters SQLNET.INBOUND_CONNECT_TIMEOUT, SQLNET.SEND_TIMEOUT,
SQLNET.RECV_TIMEOUT in sqlnet.ora to larger values.
If a malicious client is suspected, use the address in sqlnet.log to identify the source and restrict access. Note that logged addresses may not
be reliable as they can be forged (e.g. in TCP/IP).
大致意思就是因网络或系统问题超时。
然后建议他能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的闭环。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmlzYWw=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
从10.2以上的。USE_SHARED_SOCKET就已经是默认值为TRUE了,无需再改动。
MOS的124140.1文章具体介绍了这部分内容,翻译原文例如以下:
NT 4.0(可从Service Pack#3中获得)、Windows 2000以上的版本号的WINSOCK V2 API,或者Windows 2000以上的版本号。这样的特性也能通过在Windows注冊表中使用"USE_SHARED_SOCKET"參数在Oracle数据库中实现。
有一点不同的就是。在防火墙和数据库之间安装了连接管理器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来找到并设置。
In Oracle release 9 or later \\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\Key_<Home>
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
TRACE_DIRECTORY_CLIENT = <directory>
TRACE_FILE_DIRECTORY= <filename>[Insert code here]
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Windows平台Oracle使用USE_SHARED_SOCKET角色的更多相关文章
- Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 分类: oracle sde 2015-06-12 11:03 88人阅读 评论(0) 收藏
Windows平台下解决Oracle12c使用PDB数据库创建SDE的问题 Oracle 12C中引入了CDB与PDB的新特性,在ORACLE 12C数据库引入的多租用户环境(Multitenant ...
- 排错-windows平台下访问oracle em出现空白的解决方法
排错-windows平台下访问oracle em出现空白的解决方法 by:授客 QQ:1033553122 问题描述 IE浏览器本地访问oem,出现空白页面,就左上角有一行字符 http://loca ...
- Windows平台分布式架构实践 - 负载均衡
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Linux平台 Oracle 11gR2 RAC安装Part2:GI安装
三.GI(Grid Infrastructure)安装 3.1 解压GI的安装包 3.2 安装配置Xmanager软件 3.3 共享存储LUN的赋权 3.4 使用Xmanager图形化界面安装GI 3 ...
- Windows平台分布式架构实践 - 负载均衡 上
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Windows平台分布式网站系统应用(转)
概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Linux和Mac上运行.那么大家(开发者和企业)为 ...
- Windows平台的JDK安装(转)
下载Java的开发包JDK JDK有好几个类型版本,我们只需要选择Java SE类型的版本就行了.进入网页:http://www.oracle.com/technetwork/java/javase/ ...
- Windows平台配置Appium+Java环境
1) 安装JDK 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 安装 ...
- Windows平台分布式架构实践负载均衡
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
随机推荐
- 谈论高并发(二十二)解决java.util.concurrent各种组件(四) 深入了解AQS(二)
上一页介绍AQS其基本设计思路以及两个内部类Node和ConditionObject实现 聊聊高并发(二十一)解析java.util.concurrent各个组件(三) 深入理解AQS(一) 这篇说一 ...
- tcpdump VS tshark用法(转)
Tcpdump是网络协议分析的基本工具.tshark是大名鼎鼎的开源网络协议分析工具wireshark (原名叫ethereal)的命令行版本,wireshark可对多达千余种网络协议进行解码分析.W ...
- 【剑指offer】打印单列表从尾部到头部
转载请注明出处:http://blog.csdn.net/ns_code/article/details/25028525 剑指offer上的第五题,在九度OJ上測试通过. 时间限制:1 秒 内存限制 ...
- 【Android 应用程序开发】 Fragment 详细说明
笔者 : 汉书亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 本博客代码地址 : -- 单一 Fragmen ...
- [原创] linux 下上传 datapoint数据到yeelink 【golang版本】同时上传2个数据点
/* Create by sndnvaps<sndnvaps@gmail.com> * data: 2015-04-12* upload 2 datapoint to yeelink.ne ...
- projecteuler---->problem=14----Longest Collatz sequence
title: The following iterative sequence is defined for the set of positive integers: n n/2 (n is eve ...
- uva live 6190 Beautiful Spacing (二分法+dp试 基于优化的独特性质)
I - Beautiful Spacing Time Limit:8000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- Leetcode:minimum_depth_of_binary_tree解决问题的方法
一. 称号 并寻求最深的二元相似.给定的二进制树.求其最小深度. 最小深度是沿从根节点,到叶节点最短的路径. 二. 分析 当我看到这个题目时.我直接将最深二叉树的代码略微改了下,把ma ...
- Stack-based buffer overflow in acdb audio driver (CVE-2013-2597)
/* 本文章由 莫灰灰 编写,转载请注明出处. 作者:莫灰灰 邮箱: minzhenfei@163.com */ 1. 漏洞描写叙述 音频驱动acdb提供了一个ioctl的系统接口让应用层调用, ...
- Java服务器下载速度的限制
没有取之不尽,用之不竭的资源.server有限的带宽.运营商可以限制一点点.近期使用云存储openstack swift待办事项文件存储下载.如果第一个限速code: private Long wri ...