专有服务器模式:适合批处理和大任务的应用
共享服务器模式:适合有大量并发用户的应用
共享服务器模式,处理过程:
1、调度进程(Dispatcher)接受多个客户端(用户进程)的连接请求,并把这些请求放到一个公共队列中。
2、空闲的服务器进程从这个公共队列中抓出这些请求,然后完成请求的任务。
3、任务完成后,把结果放到响应队列中,调度进程再从响应队列中把完成的结果返回给用户进程(客户端)。
共享服务器模式,组成:
监听器
一个或都多个调度进程(Dispatcher Processes)
一个或多个共享服务器进程(Shared Server Processes)
一、将数据库配置为共享服务器模式(Shared Server)
1、找到初始化参数文件:%ORACLE_HOME%\dbs
如果没有初始化参数文件(PFILE),则可根据SPFILE生成PFILE
SQL>CREATE PFILE='E:\ORACLE102\DBS\INITORCL.ORA' FROM SPFILE 'E:\ORACLE102\DBS\SPFILEORCL.ORA';
2、修改初始化参数文件PFILE加入如下内容:
shared_servers=3
max_shared_servers=39
dispatchers="(protocol=TCP)(serv=wm)(list=wm)(poo=on)(disp=5)(con=33)(sess=224)"
max_dispatchers=19
3、关闭数据库
SQL>SHUTDOWN IMMEDIATE
4、根据初始化参数文件生成SPFILE
SQL>CREATE SPFILE='E:\ORACLE102\DBS\SPFILEORCL.ORA' FROM PFILE='E:\ORACLE102\DBS\INITORCL.ORA'
5、重新启动数据库
SQL>STARTUP
6、查看设置的参数是否生效
SQL>SHOW PARAMETER SHARE
结果显示:
Name Type Value
max_shared_servers integer 39
shared_servers integer 3
注:修改共享服务器进程的数量
SQL>ALTER SYSTEM SET SHARED_SERVERS=8 SCOPTE=BOTH;
查看调度进程的配置情况
SQL>SHOW PARAMETER DISP
Name Type Value
dispatchers string (protocol=TCP)(serv=wm)(list=wm)(poo=on)(disp=5)(con=33)(sess=224)
max_dispatchers integer 19
以上两条语句,显示共享服务器进程和调度进程的参数设置都已生效
注:
修改调度进程
SQL>ALTER SYSTEM SET DISPATCHERS="(protocol=TCP)(disp=6)" SCOPTE=BOTH;
关闭某个调度进程,D004为调度的名称
SQL>ALTER SYSTEM SHUTDOWN IMMEDIATE 'D004';
7、查看共享服务器进程的情况
SQL>SELECT * FROM V$SHARED_SERVER;
8、查看调度进程的情况
SQL>SELECT * FROM V$DISPATCHER;
二、数据库已被配置成共享服务器模式,如何请求一个专有服务器连接
当数据库已配置成共享服务器模式,在连接数据库的时候,用户最后请求到的总是共享服务器连接。
但在执行某些系统管理任务需要专有服务器连接。
1、找到客户端网络配置文件tnsnames.ora: %ORACLE_HOME%\NETWORK\ADMIN
2、编辑文件tnsnames.ora,设为专有服务器连接
在connect_data中增加(SERVER=dedicated)
如果希望以共享模式连接,需要将connect_data中的(SERVER=dedicated)去掉
三、客户端查看服务器的模式:
SQL>select server from v$session where sid=(select distinct sid from v$mystat);
SERVER
---------
DEDICATED