衍生、继承和直接传送连接
接收到连接请求时,监听程序可能会衍生专用的服务器进程,并将连接传送给该进程或由其继承。该方法的使用取决于所
用操作系统是否支持网络终端继承性。当监听程序衍生专用服务器进程并由该服务器进程继承连接时,即称为继承
会话。此时将按顺序出现下列事件:
1.
客户机使用配置的协议建立与监听程序的连接,并向该监听程序发送一个
CONNECT 数据包。
2.
监听程序检查是否已定义 SID 。如果已经定义,监听程序将分派或衍生一个新进程来处理该连接。此时会在监听
程序和新的服务器进程之间建立继承连接,以传送进程初始化信息。传送完毕后,继承连接关闭。请注意,新的
服务器进程会继承 TCP 套接字。
3.
服务器进程将
RESEND 数据包发送回客户机。
4.
继续向新衍生的专用服务器进程发送新的
CONNECT 数据包。
5.
该专用服务器进程接受传入的连接并将
ACCEPT
消息转发回客户机。
如果由于操作系统或协议的原因,而无法在同一机器上的两个不同进程之间传送连接,则必须进行重定向。
注:客户机断开连接时,客户机的专用服务器进程将关闭。
使用 Oracle Shared Server 的直接传送连接
当操作系统以上述方式处理共享服务器连接时,即称为 直接传送连接。二者的唯一区别是监听程序不衍生调度程
序进程。但是,连接方法是相同的。
注:如果监听程序在用于连接的远程节点上选择共享服务器调度程序,则不能进行直接传送。这是使用负载均衡
技术的 Real Application Clusters 数据库中的典型情况,在该数据库中,一个节点上的监听程序可以选择另一
个节点上的调度程序。
Windows 平台注意事项
Windows NT 在缺省情况下不支持网络终端的继承性。要启用该功能,必须将注册表条目
USE_SHARED_SOCKET
设为
TRUE ,才允许多个连接使用一个单一套接字。当该值为 FALSE (缺省值)时,将不会进行继承连接,
而将启动重定向会话。
如果
USE_SHARED_SOCKET 条目设为 TRUE , Windows NT 可以启动继承连接,但是需注意几点事项。如果启动
了多个连接,并且因某种原因监听程序已经停止,则直到清除了这些连接后,监听程序才能重新启动。这是
因为现有连接正在使用监听程序执行监听需使用的同一端口号。这是
Microsoft 使用 Widows 套接字 API
(WINSOCK2) 实施
TCP/IP 的局限性。