本文给出将数据库运行状态由“专有服务器模式”调整为“共享服务器模式”的方法。
专有服务器模式 ---> 共享服务器模式
Dedicatied Server Mode ---> 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 --
专有服务器模式 ---> 共享服务器模式
Dedicatied Server Mode ---> 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/