Oracle有2种模式:

Dedicated Server Process(专有模式)

Dedicated模式是默认的。类似银行的VIP服务,一对一关系。

一个客户端就需要一个Dedicated server。

客户端不断开与服务器的连接,就会一直保持连接状态。

响应和执行客户端的请求。

由listener进程衍生出dedicated进程。

若数据库的连接比较多,这种模式消耗的资源就很大了。

客户端和服务器的连接模式如下:

p_w_picpath

p_w_picpath

 

 

 

 

Shared Server Process (共享模式)

p_w_picpath

dispatcher相当于保安,一对多。

shared server相当于营业员,一旦shared有空闲,就去SGA的Request Queue中处理新的请求。

其中Request Queue全局只有一个,Response Queue有多个。

 

客户端和服务器的连接如下:

p_w_picpath

1、客户端连接到listener,

2、由listener确认是需要dedicated还是shared,若是dedicated就按照dedicated的模式进行。

若是shared的方式,就由listener按照一定的算法分配dispatcher,并返回dispatcher的端口号给客户端。

3、客户端和dispatcheer进行连接。

 

 

优点:

极大的降低负责和前台处理的进程数。(每个dispatcher进程可以连接250个客户端请求。)

 

 

增加了possible users

实现负载均衡

减少了idle server的进程数

降低了对内存的要求

 

p_w_picpath

Request Queue全局只有一个,Response Queue有多个。

 

dedicated的PGA包含的数据很多,PGA比较小。

shared的SGA较大。

 

 如何配置Shared server?

配置初始化参数:

p_w_picpath

dispatchers=”(protocol=tcp)(dispatchers=2)(protocol=ipc)(dispatchers=1)”

上述意思:启动2个dispatcher进程,都是tcp/ip模式,再启动一个IPC。

p_w_picpath 

MAX_DISPATCHERS=N

最大多少个dispatcher进程。

该参数是静态的,负荷大不会增加,负荷小也不会减少。

每个dispatcher支持250个连接。

 

shared_servers =6

最小多少个shared进程。

MAX_shared_servers =10

最多多少个shared进程。

这2个参数是动态的,

默认启动6个shared,负荷大了就继续启动shared,最多10个。负荷小了就减少shared到6个。

 

CIRCUITS=100

定义了整个oracle中virtual circuits的个数。包括(inbound和outbound)进出的总和。

 

shared_server_sessions=100

定义了shared server能够处理的session的个数

 

如果以上参数在初始化文件中没有定义,只有先修改spfileSID之后,才能用alter system参数修改。

先create pfile from spfile;

shutdown immediate;停掉数据库

修改initSID之后,

create spfile from pfile;

然后启动数据库 startup。

可以show parameter dispatcher和show parameter shared查看。

p_w_picpath

用ps –ef | grep oracle可以查看到具体启动了shared_servers个进程。

p_w_picpath

 

关于验证,用lsnrctl services 命令查看即可。

p_w_picpath

如上是正确的。

关于客户端连接

修改客户端tnsnames.ora文件,增加一行 server=shared/dedicated 即可:

p_w_picpath

 

 

p_w_picpath

我自己测试的 貌似出问题了~~!

待我好好研究下~~

 

 

以下三种情况 要使用dedicated模式:

1.提交批处理(submit batch jobs)负载较大,没有空闲时间。

2.执行一下特殊操作(例如用sys登录,执行startup、shutdown等操作)

3.三层架构中,建议使用dedicated的模式。

 

上世界90年代,网络架构一般都是2层模式,为了增加更多的并发连接,shared模式大行其道。

现在2层架构已经没落,3层架构蓬勃发展。

shared模式逐渐会被淘汰的!

这句话是小布老师说的,我只是记录。。。。

 

根据实际情况来确定,例如你就是2层架构,并发数又比较多,那就shared了~