【Shared Server Mode】“专有服务器模式”调整为“共享服务器模式”

本文给出将数据库运行状态由“专有服务器模式”调整为“共享服务器模式”的方法。
专有服务器模式            ---&gt 共享服务器模式
Dedicatied Server Mode ---&gt Shared Server Mode


1.首先生成一份PFILE
sys@ora10g> create pfile from spfile;

File created.

2.到$ORACLE_HOME/dbs目录,确认PFILE已经生成成功
ora10g@testdb /home/oracle$ cd $ORACLE_HOME/dbs
ora10g@testdb /oracle/app/oracle/product/10.2.0/db_1/dbs$ ls -l initora10g.ora
-rw-r--r-- 1 oracle oinstall 999 07-23 08:50 initora10g.ora

3.修改PFILE
ora10g@testdb /home/oracle$ vi $ORACLE_HOME/dbs/initora10g.ora
在initora10g.ora参数文件的后面添加如下几条关键参数!
shared_servers=3
max_shared_servers=60
dispatchers="(protocol=TCP)(serv=ora10g)(list=ora10g)(poo=on)(disp=6)(con=36)(sess=100)"
max_dispatchers=20

在这里,我来分别解释一下上面非常重要的四个参数设置后的含义:
shared_servers=3
注释:数据库启动时,共享服务器进程的最小值,这里也就是说,先分配3个共享服务器进程;

max_shared_servers=60

注释:当上面3个进程无法满足需要的时候,系统会自动扩展到这个最大值,也就是最大会分配60个共享服务器进程;

dispatchers="(protocol=TCP)(serv=ora10g)(list=ora10g)(poo=on)(disp=6)(con=33)(sess=100)"

注释:上面设置了共享服务器进程的数量,这里就需要设置另外一个很重要的进程--调度进程,分别说明其中的每一个参数
protocol=TCP:没啥说的,支持的协议是TCP
serv=ora10g:指定监听器的别名,注意这里需要设置为在tnsnames.ora中的一个服务名,我这里是ora10g
list=ora10g:指定在tnsnames.ora中的一个网络服务名,我这里还是ora10g
poo=on:启用共享池
disp=6:初始分配调度进程数量为6
con=36:每个调度进程最大网络连接数为36
sess=100:每个调度进程最大会话数为100

max_dispatchers=20
注释:限制dispatchers最大数为20。

4.关闭数据库
sys@ora10g> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

5.通过上面的PFILE生成SPFILE
NotConnected@> create spfile from pfile='$ORACLE_HOME/dbs/initora10g.ora';

File created.

6.重启数据库(这时默认使用的参数文件已经是刚刚生成的SPFILE)
NotConnected@> startup;
ORACLE instance started.

Total System Global Area  562036736 bytes
Fixed Size                  2022312 bytes
Variable Size             163578968 bytes
Database Buffers          390070272 bytes
Redo Buffers                6365184 bytes
Database mounted.
Database opened.

7.确认上面四个重要参数已经生效
sys@ora10g> show parameter shared_servers

NAME               TYPE    VALUE
------------------ ------- ----------------------------
max_shared_servers integer 60
shared_servers     integer 3

sys@ora10g> show parameter dispatchers
NAME               TYPE    VALUE
------------------ ------- ----------------------------------------
dispatchers        string  (protocol=TCP)(serv=ora10g)(list=ora10g)
                           (poo=on)(disp=5)(con=33)(sess=100)
max_dispatchers    integer 20

8.共享服务器进程情况查看
正如上面的参数shared_servers=3设置的那样,现在系统中已经初始化开启了3个共享服务器进程
数据库中查看方法:
sys@ora10g> select NAME,PADDR,STATUS,MESSAGES,BYTES from v$shared_server;

NAME PADDR            STATUS             MESSAGES      BYTES
---- ---------------- ---------------- ---------- ----------
S000 000000008165E508 WAIT(COMMON)            870     150376
S001 000000008165ECF0 EXEC                   1858     376240
S002 000000008165F4D8 EXEC                   6078     807850

操作系统进程查看方法:
sys@ora10g> !ps -ef | grep -v grep | grep ora_s0
oracle    7195     1  0 09:16 ?        00:00:01 ora_s000_ora10g
oracle    7197     1  0 09:16 ?        00:00:01 ora_s001_ora10g
oracle    7199     1  0 09:16 ?        00:00:02 ora_s002_ora10g

9.共享服务器进程情况查看
这里也如上面的参数dispatchers中disp=6设置的那样,现在系统中已经初始化开启了6个调度进程
数据库中查看方法:
sys@ora10g> select NAME,NETWORK,STATUS from v$dispatcher;

NAME NETWORK                                            STATUS
---- -------------------------------------------------- ----------------
D000 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=23377))  WAIT
D001 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=63510))  WAIT
D002 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=22876))  WAIT
D003 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=24477))  WAIT
D004 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=47889))  WAIT
D005 (ADDRESS=(PROTOCOL=tcp)(HOST=testdb)(PORT=33295))  WAIT

6 rows selected.

操作系统进程查看方法:
sys@ora10g> !ps -ef | grep -v grep | grep ora_d0
oracle    7185     1  0 09:16 ?        00:00:00 ora_d000_ora10g
oracle    7187     1  0 09:16 ?        00:00:00 ora_d001_ora10g
oracle    7189     1  0 09:16 ?        00:00:00 ora_d002_ora10g
oracle    7191     1  0 09:16 ?        00:00:00 ora_d003_ora10g
oracle    7193     1  0 09:16 ?        00:00:00 ora_d004_ora10g
oracle    9320     1  0 09:58 ?        00:00:00 ora_d005_ora10g

OK,到此,通过上面的简单配置,数据库已经由原来的专有服务器模式配置成为了共享服务器模式。

10.小结
对于共享服务器模式的数据库,其实配置关键就是围绕以下四个参数展开的:
shared_servers=3
max_shared_servers=60
dispatchers="(protocol=TCP)(serv=ora10g)(list=ora10g)(poo=on)(disp=6)(con=36)(sess=100)"
max_dispatchers=20

什么时候需要共享服务器模式?
1)并发超高
2)数据库server的访问压力过大,这种模式可以减少服务器进程的数量
3)特殊需求

什么时候不适合共享服务器模式?
1)因为存在分配和响应用户请求的过程,有时会有性能问题
2)能用专有服务器模式的情况下就不用共享服务器模式

Good luck

secooler
09.07.23

-- The End --

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/519536/viewspace-609990/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/519536/viewspace-609990/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值