关于专用服务器和共享服务器有个相当经典的比喻。
我们把oracle服务器比喻成一个餐馆,你去餐馆吃饭,如果有个服务员专门为你服务,从你进去就站在你身边,那这就是专用模式。如果她还未其他客人服务,那这就是共享服务器模式。
这么查看我们的服务器是共享模式还是专用模式呢?
我们可以查看shared_servers是否为0,如果是0,则代表是专用服务器模式,客户端只能用专用服务器模式连接,用共享的会报错。如果不为0,这代表共享server process的个数。客户端可以选择用专有模式还是共享模式连接。
SQL> show parameter shared_servers;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer
shared_servers integer 1
我的服务器现在有一个共享server process在等待为人服务。
[oracle@mypc admin]$ ps aux|grep "s00"
oracle 3550 0.0 2.4 257792 10884 ? Ss 09:41 0:00 ora_s000_orcl
oracle 3889 0.0 0.1 3932 688 pts/0 R+ 11:12 0:00 grep s00
我们可以看到有一个oracle进程叫做ora_s000_orcl,就是这个了。
知道了这些,要是我们想把服务器配置成专用模式就简单了。只需要
sql>alter system set shared_servers=0
就可以了。
那么怎么设置共享服务器模式呢?要配置共享服务器模式,需要经过以下步骤:
配置参数dispatchers
在客户端用共享模式连接
1.配置dispatchers参数:
格式为:dispatchers="(attr=value)"
主要属性有:address(add,addr),description(des,desc),protocol(pro,prot),connections(con,conn),dispatchers(dis,disp)。
例如:
dispatchers="(des=(address=(protocol=tcp)(host=mypc)(port=5000)))(connections=1000)(dispatchers=2)"
des,addr,pro就不介绍了,就是怎么找到这个dispatcher以及用什么协议连接他。
conn代表每个dispatcher 可以维护多少个连接,即最多有多少个用户可以连接到这一个dispatcher上。
dis:代表初始化dispatcher的个数。既然dispatcher的个数可以指定,那后面共享服务进程的个数怎么指定呢?这个好像可以通过修改shared_servers来实现,又好像听说oracle服务器会自己维护。
SQL> alter system set dispatchers='(des=(address=(protocol=tcp)(host=mypc)(port=5000)))(connections=1000)(dispatchers=2)';
提示修改成功,我们的共享服务器模式就配置成功了。下面就是应用了。
例如在客户端配置tnsnames.ora
orcl_mypc_shared=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=1.1.1.1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)
(SERVER=shared)))
则用此字符串连接就会使用共享服务器模式
当然也可以使用专用模式
orcl_mypc_dedicated=
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=1.1.1.1)(PORT=1521))
(CONNECT_DATA=
(SERVICE_NAME=sales.us.acme.com)
(SERVER=dedicated)))
使用plsql developer连接服务器下篇再说