Oracle shared server配置
接触Oracle这么些年来,看到Oracle不少,起码也有几百个了吧,但数据库s是shared server配置只有一个。所以也一直没有好好研究它。OCM考试大纲中有Configure the database instance to support shared server connections 一栏,那今天就来配置一下Oracle shared server。
由上图可知,shared server进程主要通过disipatch进程进行派发,此进程起到了类似中间件的作用。采用shared server模式,可以最大程度的减少主机用户进程数(也就意味着shared server模式比dedicated sever模式更加节约操作系统资源)。以下为shared server配置过程(从dedicated sever转变成shared server)。
1、配置dispatch进程数,协议为TCP
SQL> alter system set dispatchers='(PROTOCOL=TCP) (DISPATCHERS=20)';
System altered.
2、配置最大dispatch进程数,需要注意的是如果dispatchers参数配置中大于30,如dispatchers='(PROTOCOL=TCP) (DISPATCHERS=40)',将覆盖max_dispatchers=30
SQL> alter system set max_dispatchers=30 ;
System altered.
3、设置Oracle启动时最小的shared server进程数,需要注意的是不要将此参数设置太高。
SQL> alter system set shared_servers=5;
System altered.
4、设置Oracle允许最大shared server session数。需要注意的是当设置此参数之后不能大于参数sessions。如果不设置此参数,Oracle将会根据空闲槽(free slot)创建shared server session数。
SQL> show parameter sessions
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_max_sessionspace_size integer 0
java_soft_sessionspace_limit integer 0
license_max_sessions integer 0
license_sessions_warning integer 0
logmnr_max_persistent_sessions integer 1
sessions integer 500
shared_server_sessions integer
SQL> alter system set shared_server_sessions=400;
System altered.
当配置完成shared server之后,可以看到操作系统中fork出20个dispatch进程
[ora10g@mcprod admin]$ ps -ef|grep ora_d|grep -v grep|grep -v ora_dbw
ora10g 13915 1 0 18:03 ? 00:00:00 ora_d001_mcstar
ora10g 13917 1 0 18:03 ? 00:00:00 ora_d002_mcstar
ora10g 13919 1 0 18:03 ? 00:00:00 ora_d003_mcstar
ora10g 13921 1 0 18:03 ? 00:00:00 ora_d004_mcstar
ora10g 13923 1 0 18:03 ? 00:00:00 ora_d005_mcstar
ora10g 13925 1 0 18:03 ? 00:00:00 ora_d006_mcstar
ora10g 13927 1 0 18:03 ? 00:00:00 ora_d007_mcstar
ora10g 13929 1 0 18:03 ? 00:00:00 ora_d008_mcstar
ora10g 13931 1 0 18:03 ? 00:00:00 ora_d009_mcstar
ora10g 13933