oracle数据库共享服务器连接,Oracle数据库专用和共享服务器

Oracle数据库专用和共享服务器

专用服务器:一个客户端连接对应一个服务器进程

共享服务器:多个客户端连接对应一个服务器进程,服务器端存在一个进程调度器来管理。

Oracle缺省用的是专用服务器模式,Oracle可以同时支持共享服务器和专用服务器模式,可以指定一个会话使用专用服务器,另一个会话使用共享服务器。

共享服务器具有以下一些缺点:

1)共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。

2)存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。

3)存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。

4)共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner,并且sql_TRACE没有意义(因为是共享而不是当前会话的)。

MTS减少的内存实际上是专用服务器模式下每个用户连接到操作系统进程所需的内存,但它却使用SGA的Large_Pool来分配UGA,拆东墙补西墙,所减少的内存是很少的。

如果用户会话的连接和断开很频繁,数据库进程的创建和删除的开销会非常大,这种情况最好采用共享服务器模式(否则,应该使用连接池技术)。

如果客户端一次连接终身使用(会话生命周期内),使用共享服务器模式的意义不大。因为大部分时间,一个会话就连接到一个服务器进程,无法共享服务器进程。

判断oracle是共享模式还是专用模式有以下方法:

1) show parameter shared_server; (注:8i应为:show parameter mts_servers;)

如果数值> 0,就是enable了共享服务器.

2).在配置为共享服务器的情况,Client可以用共享服务器或者专用服务器来联接数据库,这个参数的控制是在tnsnames.ora里设定的。如:

Connect=

(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.100.10)(PORT = 1521))

)

(CONNECT_DATA =

(SID = orcl)

(SERVER=DEDICATED)

)

)

用DEDICATED方式连接DB.

另外,Background process,以及通过本地连接进来的,只能是DEDICATED .比如说sqlplus user/pass形式

如果DB没有配置共享服务器,那么Client只能以DEDICATED方式连接DB.

3)判断一个已经连接的session的连接方式

a)select server from v$session where ...

如果server = 'DEDICATED'则是DEDICATED方式

server='SHARED'则是shared方式,并且正有shared_server_process为其服务

server='NONE'的话,则无shared方式,并且当前没有shared_server_process为其服务

b)仅用于Unix底下,似乎windown不行

连接v$session,v$process看process中的program

select p.program,s.server from v$session s,v$process p where s.paddr = p.addr

如果program为...(S0NN)的,则是shared方式,并且正有shared_server_process为其服务

如果program为...(D0NN)的,则是shared方式,并且当前没有shared_server_process为其服务

如果program为其它的,则是'DEDICATED'方式

总结

如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值