目录
一、共享与专用服务器的区别:
1、专用服务器(DEDICATED):一个客户端连接对应一个服务器进程
2、共享服务器(SHARE):多个客户端连接对应一个服务器进程,服务器端存在一个进程调度器来管理。
共享服务器,它必须使用net services.也就是说必须配置tns。它适合用于高并发,事物量小,如果这个时候采用了共享模式,可以大大减少由于高度并发对于ORACLE服务器的资源消耗。
二、判定共享模式和专用模式的方法
1.查看参数
SQL>show parameter shared_server; ——shared_serverss为0为专用模式,1为共享模式
2.查看session视图
SQL> Select username,server,program from v$session where username is not null; USERNAME SERVER PROGRAM --------- --------- ------------------- GWM NONE SYS SHARED plsqldev.exe SYS SHARED plsqldev.exe SYS DEDICATED sqlplus.exe --专用模式
3、查看监听服务
SQL>lsnrctl service
如果服务中有DEDICATED和 DISPATCHER 模式,说明共享服务器模式已开启
4、查看TNSNAMES.ora文件中
(SERVER = DEDICATED)---这里设置为DEDICATED即为专用模式,如果改为SHARED,则为共享模式(共享模式需要单独开启)
三、共享的开启和关闭
1、默认安装情况下是专用模式。
专用模式下不可以使用共享模式。但开启了共享模式后,专用模式仍然可以使用。
2、共享模式和专用模式可以同时并存,但需要将共享服务器模式开启,开启方式:
(1)查看当前配置:
SQL> show parameter dispatch
SQL> show parameter shared_server
(2)修改数据库参数(均为动态参数,即刻生效)--这种情况开启后,可以支持300个sessions,200个共享服务器模式,100个专用服务器模式
SQL> alter system set dispatchers='(PROTOCOL=TCP)(DISPATCHERS=3)';
SQL> alter system set max_dispatchers = 10;
SQL> alter system set shared_servers = 10;
SQL> alter system set max_shared_servers = 30;
SQL> alter system set shared_server_sessions = 200;
3、还原专用模式配置为初始化配置:
show parameter dispatch show parameter shared_server alter system set dispatchers='(PROTOCOL=TCP)(SERVICE=PROD1XDB)'; alter system reset max_dispatchers; alter system set shared_servers = 1; alter system reset max_shared_servers; alter system reset shared_server_sessions;
同时参数show parameter share_server 的值是1,(1代表共享模式,2代表关闭共享,使用专用模式)
4、改为共享模式后,前端用户可以配置tnsnames.ora来限定连接数据库,是通过共享还是专用
MESORCLSTD =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 172.18.1.226)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)---这里设置为DEDICATED即为专用模式,如果改为SHARED,则为共享模式
(SERVICE_NAME = MESORCL)
)
)
四、共享服务器缺点:
1、共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。
2、存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。
3、存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。
4、共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner, 并且SQL_TRACE没有意义(因为是共享而不是当前会话的)。
MTS减少的内存实际上是专用服务器模式下每个用户连接到操作系统进程所需的内存,但它却使用SGA的Large_Pool来分配UGA,拆东墙补西墙,
所减少的内存是很少的。如果用户会话的连接和断开很频繁,数据库进程的创建和删除的开销会非常大,这种情况最好采用共享服务器模式(否则,
应该使用连接池技术)。如果客户端一次连接终身使用(会话生命周期内),使用共享服务器模式的意义不大。因为大部分时间,一个会话就连接到一
个服务器进程,无法共享服务器进程。
五、共享模式的参数关闭后的情况:
1、将 shared_servers 参数置为0(alter system set shared_servers=0;),那么所有以共享方式连接到数据库都不能成功,但是未释放的共享
连接会继续 保持连接,直到断开。
2、如果将 shared_servers 和 max_shared_servers 都设为0(alter system set max_shared_servers=0;),那么共享连接将被终结。所有的共享方式连接都断开了的话,就可以使用 alter system set dispatcher=''; 将dispatcher清除,防止下次启动
数据库又打开了共享连接方式。
文章评论