专用服务器:一个客户端连接对应一个服务器进程。
共享服务器:多个客户端连接对应一个服务器进程,服务器端存在一个进程调度器来管理它。
其实我之前也没说清楚这一点,直接用了测试机那样的专用服务器模式,因为说明书上写着,当预期连接数较少时,
在官方机器上,已经建立了共享服务器模式。其实现在看来真的没必要。一种是我们用中间件连接oracle,中间件本身有连接池机制。
另外,oracle的这种共享服务器模式还不够好,有很多缺点。
从互联网上看,共享服务器有以下缺点:
1)共享服务器的代码路径比专用服务器长,所以天生比专用服务器慢。
2)存在人为死锁的可能,因为是连环的。只要一个连接被阻塞,这个服务器进程上的所有用户都被阻塞,极有可能死锁。
3)存在独占事务的可能,因为如果一个会话的事务运行时间过长,就垄断了共享资源,其他用户只能等待,而专用服务器,每个客户端都是一个会话。
4)共享服务器模式限制了一些数据库特性,比如:不能单独启动和关闭实例,不能恢复介质,不能使用Log Miner,SQL_TRACE没有意义(因为是共享的而不是当前会话)。
MTS减少的内存实际上是每个用户在专用服务器模式下连接操作系统进程所需的内存,但它使用SGA的Large_Pool来分配UGA,拆东墙补西墙,减少的内存非常少。
如果用户会话频繁连接和断开,创建和删除数据库进程的开销将会非常高。在这种情况下,最好采用共享服务器模式(否则要使用连接池技术)。
如果客户端的一次性连接是终身使用的(在会话的生存期内),那么使用共享服务器模式是没有意义的。因为大部分时候,一个会话是连接到一个服务器进程的,服务器进程是不能共享的。
因此,我们稍后将构建的实例将只使用oracle默认的专用服务器模式,没有必要使用共享服务器模式。
有以下方法可以确定oracle是处于共享模式还是专用模式:
1)显示参数shared _ server(注:8i应该是:显示参数mts _ servers)
如果值>:0,即共享服务器被启用。
名称类型值
- - -
max_shared_servers整数20
共享服务器会话整数330
shared_servers整数1
2).在配置为共享服务器的情况下,客户端可以使用共享服务器或专用服务器来连接数据库。该参数的控制在tnsnames.ora中设置,例如:
DXPT =
(描述=
(地址列表=
(地址=(协议= TCP)(主机= 10.10.10.10)(端口= 1521))
)
(连接数据=
(服务器=专用)
(服务名称= dxpt)
)
)
这是为了在专用模式下连接dxpt实例。
写(SERVER = SHARED)使用共享服务器模式,但此时需要开启shared_server_process,否则会出错,oracle无法连接。
如果空的这一段没有写,那么系统会根据服务器模式自动调整。
但是,根据测量结果,即使服务器被定义为共享服务器模式并且shared_server_process没有打开,在v$session中发现的连接
静态服务器=专用
所以基本上我们可以不写就把空放在这段话里,但是有时候我们要连接我们共享服务器模式的数据库。
放空。有可能系统认为有必要通过共享服务器的方式进行连接。这时候就需要声明SERVER = DEDICATED使用专用服务器进行连接。
另外,后台进程,以及那些本地连接的,只能是专用的形式。例如,sqlplus用户/通行证。
如果数据库没有配置共享服务器,客户端只能以专用方式连接到数据库。
=================
oracle的专用模式和共享模式(2008-09-24 17:43:10)转载标签:it分类:Oracle基金会
来源1:
专用模式和共享模式的本质区别在于,用户进程位于ORACLE服务器所在计算机的内存区域中。
具体表现在:
1.在共享模式下,多个用户进程共享一个服务器进程;在专用模式下,ORACLE为每个用户进程准备一个服务器进程。
2.在实际情况中,应用系统和数据库之间总是有很多连接请求,这就导致了很多用户进程。如果您的内存和CPU有限,并且用户进程没有为数据库操作占用太多的空空间,那么您应该将数据库连接模式设置为共享模式。这样,ORACLE内存区域中只有有限数量的服务器进程,这些服务器进程将通过一个调度器处理多个用户进程的请求。
3.如果你的硬件资源是好的,把它设置为专用模式。每个用户进程都有一个对应的服务器进程。这样,您的用户进程将会非常快速地处理数据!
简单来说,如果连接客户数量少,占用数据库时间长,建议使用专有模式。如果连接的客户数量很大,请使用共享模式。
来源2:
共享服务器架构:客户端进程最终连接到一个调度器,PMON进程注册调度器的位置和负载,让监听器以最小的负载提交给调度器。调度程序可以同时支持多个客户端连接。
专用服务器架构:每个客户端进程都与一个专用的服务器进程相连接。任何其他客户端都不共享该服务器进程。
此外,专用服务器架构不支持HTTP和IIOP客户端,仅支持TTC客户端。
来源3:
专用是指一个用户进程对应一个服务器进程,即每个服务器进程被一个特定的用户进程独占。如果有50个用户进程,那么就有50个服务器进程。
共享就是多个用户进程可以共享一个服务器进程,中间通过一个调度进程来实现。因为共享,服务器消耗更少。具体配置,需要配置mts参数。
来源4:
建议不要选择共享的!
只需配置mt
也可以在特殊安装后进行配置。
再说mt也不能乱用。
五个来源:
1.无论是否配置为共享服务器,最重要的参数是
8i mts _服务器
9i共享_服务器
显示参数共享服务器mts服务器
如果值>:0,即共享服务器被启用。
2.当配置为共享服务器时,客户端可以选择使用共享服务器或专用服务器来连接数据库。该参数的控制在tnsnames.ora中设置
aaaa=
(描述=
(地址列表=
(地址=(协议= TCP)(主机= aaaa)(端口= 1521))
)
(连接数据=
(SID = aa)
(服务器=专用)
)
)
红色部分指定了到DB的专用连接。
另外后台进程,以及本地连接的,只能是专用的形式,比如sqlplus user/pass。如果DB没有配置共享服务器,那么客户端只能以专用的形式连接到DB。
本文链接:http://www.123down.cn/gonglue/227379.html