水聆月

静月阁

导航

[转载]连接配置结构

 

Oracle的连接可以分成两种:

 

一、专用服务器连接结构(Dedicated Server):

 

在这种方式中,对于每一个用户,其数据库应用是由用户 进程所运行,并有一个专用服务器进程为之服务,执行 Oracle服务器代码。

 

 

 

专用服务器的工作过 程:

1)客户端通过oracle net向监听器发连接请求

2)监听器收到请求并将此请求导向服务器,服务器向用户返回一个连接成功信 息,并为此用户创建一个专用连接

3) 客户直接与该专用服务器进程进行交互,处理SQL,并且服务器在该会话的PGA中建立一个专用SQL区。

 

二、 多线程服务器连接结构(Multithread Server)

 

在这种方式中,一个或多个客户应用程序共享一组服务器进程,与专用服务器不同的是,客户和服务器进程不是一对一的关系,而 是由调度进程对多个服务器进程进行调度,以服务来自客户应用的连接请求

 

 

 

 

专用服务器结构中,一个服务器进程只为一个客户服务。 这样的话,如果有一千个客户,就需要有一千个对应的服务器进程,就会耗费大量的系统资源。为了支持对于可伸缩性的需求,在oracle7中引入了多线程服 务器(MTS,也称为共享服务器)。下面说明共享服务器建立连接的过程,以级与建立专用服务器连接过程的不同:

 

1) 客户通过网络与监听器联系

2) 监听器检测到请求,基于Oracle net结构来确定是否与多线程服务器连接。监听器将客户请求导向相应的调度程序

3) 监听器通过使客户与调度程序了解对方的网络地址,从面完成了双方的介绍。

4) 一旦客户与调度程序知道如何找到对方,它们就直接通信,不要需要监听器。客户直接将操作请 求发送给调度程序

5) 调度程序将客户请求放在SGA的请求队列中。

6) 下一个可用的共享服务器进程从请求队列中读取请求,进行相应的工作。

7) 共享服 务器进程将结果存放在提交相应请求的调度程序的响应队列中

8) 调度程序从响应队列中读取数据并将结果送组客户

补充:

==============================================================================

享服务器连接和专用服务器连接之间有一个重大区别,与数据库连接的客户进程不会与共享服务器直接通信,但专用服务器则不然,客户进程会与专用服务器直接通 信。

 

之所以不能与共享服务器直接对话,原因就在于这个服务器进程是共享的。为了共享这些进程,还需要另外一种机制,通过这种机制才能与服 务器进程“对话”。为此,Oracle使用了一个或一组称为“调度器”的进程。客户进程通过网络与一个调度器进程通信。这个调度进程将客户的请求放入 SGA中的请求队列。第一个空闲的共享服务器会得到这个请求,并进行处理。完成这个命令后,共享服务器会把响应放在在原调度器(即接受请求的调度器)的响 应队列中。调度器进程一直在监听这个队列,发现有结果后,就会把结果传给用户。

==============================================================================

posted on 2011-03-10 13:12  水聆月  阅读(102)  评论(0)    收藏  举报