实例解析Oracle是共享模式还是专用模式

来源:岁月联盟 编辑:zhuzhu 时间:2007-08-17

1.是否配置为共享服务器,最主要的参数是:

 

8i mts_servers9i shared_server show parameter shared_server mts_servers

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

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

 

aaaa=(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = aaaa)(PORT = 1521)))(CONNECT_DATA =(SID = aa)(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

 

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

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

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

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