在建立Oracle数据库的时候应该会在数据库建立助手向导上面看到这么一个选项就是数据库的连接模式采用什么方式在Oraclei或者g中可以看到有种连接模式一种叫做专用服务器连接(dedicated server) 另外一种叫做共享服务器连接(shared server)下面我们来分类说一下这两种连接方式的不同点
专用服务器模式就是说每次在对Oracle进行访问的时候Oracle服务器的Listener会得到这个访问请求然后回为这个访问创建一个新的进程来进行服务所以说对于每一个客户端的访问都会生成一个新的进程进行服务是一种类似一对一的映射关系这种连接模式的一个很重要的特点就是UGA(用户全局域)是存储在PGA(进程全局域)中的这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的
而另外的共享服务器连接则是一种在程序编写的时候通常会用到的连接池(pool)的概念采用这种模式的话在数据库的初始化的时候就会创建一批服务器连接的进程然后把这些连接进程放入一个连接池来进行管理初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的在连接建立的时候Listener首先接受到客户端的建立连接的请求然后Listener去生成一个叫做调度器(dipatcher)的进程与客户端进行连接调度器把把客户端的请求放在SGA(系统全局域)的一个请求队列中然后再共享服务器连接池中查找有无空闲的连接然后让这个空闲的服务器进行处理处理完毕以后再把处理结果放在SGA的相应队列中调度器通过查询相应队列得到返回结果再返回给客户端这种连接模式的优点在于服务器进程的数量可以得到控制不大可能出现因为连接人数过多而造成服务器内存崩溃但是由于增加了复杂度以及请求相应队列可能性能上有所下降
总之在开发阶段中用第一种专用服务器可能好一些因为少了一些中间的复杂度而且开发的时候一般连接的数量也少而在多个应用同时使用一个数据库的实际应用环境下采用第二种方法可能好一些因为如果到时候突然有个或者个请求连接的话数据库服务器如果同时建立个连接肯定要受不了的当然也要看到时候的实际情况如何再做决定两者没有绝对的哪种好哪种不好的差别