第1个回答 2015-03-24
给你复制几段,顺便自己也复习一下:
连接
连接:是从客户到Oracle实例的一条物理路径。连接可以是客户端通过网络建立(客户端和数据库不在同一个服务器上),也可能是客户端和数据库都在一个服务器上通过IPC机制建立。
会话
会话是实例中的一个逻辑实体,可以在会话上执行SQL、提交事务等。
服务进程
服务进程就是代表客户会话完成工作的进程。应用向数据库发送的SQL语句最后就是由服务进程接受并执行。无论是共享服务器还是专用服务器,服务进程的作用都是处理提交的SQL语句。
区别和联系
连接与会话
一提到连接,很多人第一印象都认为连接对应的就是会话。其实不然在一个连接上可以对应0个、一个、多个会话。会话也可以独立于连接,当然此次连接的状态为空闲状态。同一条物理连接上的会话都是单独而且独立的,每个会话可以使用不同的用户身份。
会话与服务进程
专用服务器:
同一个连接上的所有会话都有同一个服务进程创建。
共享服务器:
同一个连接上的会话不一定都是由相同的服务进程创建。
连接与服务进程
专用服务器模式:
客户端向数据库服务器发出请求,当监听器监听到之后会创建一个服务进程专门为该连接服务的服务进程(或者是线程),为一一对应的关系。
共享服务器模式下:
客户端向数据库服务器发出请求,当监听收到之后会分配一个调度程序与客户建立连接。在共享服务器模式下,相当于在一个池中创建好一些服务进程。当客服端发出请求时,与客户端连接的调度程序会将请求放入请求队列,让后从服务进程的池中随机取出一个空闲的服务进程为其服务把产生的结果放到相应队列,结束之后服务进程会重新变为空闲进程。
Note:一旦客户进程与服务进程建立连接,监听就不在被需要。
1. 如果是dedicated server,则客户端只能创建dedicated server connection
2. 如果是shared server,则客户端能创建dedicated server connection和shared server connection如果是从服务器通过IPC机制连接的为dedicated server connection,如果是通过tns连接则为shared server connection。这是因为通过tns连接时需要经过网络发送请求,由监听器分配调度程序负责分配服务进程。