本帖最后由 chencheng523523 于 2012-9-4 13:13 编辑
B.查询视图:
在网上有的资料上说只要查询下面三个视图,有记录则说明启动了共享模式,经过验证,具体情况如下:
select * from v$shared_server; ---有记录,且STATUS字段为WAIT(COMMON),则说明启动共享;
status为TERMINATED或者无记录,则说明没有启动共享服务器
select * from v$dispatcher; --有无记录都不能说明启动共享服务器,只能说明是配置了dispatchers参数
select * from V$CIRCUIT ; --有记录说明当前有使用共享模式的连接,无记录则不能判定服务器模式
C.查询监听器的状态:
1.4、客户端建立的连接模式
A.当服务器采用专用服务器模式时,客户端只能使用专用模式连接,也就是在connect_data数据中只能使用 server=dedicated。
B.当服务器采用共享服务器模式时,客户端可以选择建立共享还是专用连接,connection,只要在 connect_data 中指定server=dedicated or server=shared
大多数情况下我们更倾向或习惯专用模式,两种模式下,对sga等分配都会有不同,所以如果转换成mts模式,别忘了sga也是需要调整的。最典型的是mts模式需要较大的large_pool_size。如果真想转换还是仔细看看oracle关于mts的文档。共享连接只是把连接SESSION信息放在LARGE POOL,所以LARGE POOL要大一些。而专用连接的SESION信息放在PGA。
1.5、禁用共享服务器模式
禁用的实验:
-------------------------
alter system set shared_servers = 0 ;
alter system set max_shared_servers = 0 ;
在已经建立共享模式的客户端执行查询,一直处于等待,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL COMMON
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL> select program,saddr,server,status from v$session
where saddr in ('296F8CE4','296FB24C');
PROGRAM SADDR SERVER STATUS
------------------------------------------------ -------- --------- --------
plsqldev.exe 296F8CE4 NONE INACTIVE
plsqldev.exe 296FB24C NONE INACTIVE
2 rows selected.SQL> 恢复参数值:
SQL>
alter system set shared_servers = 1;
System altered.
SQL> alter system set max_shared_servers = 5;
System altered.
SQL>
前台的查询恢复正常,查看视图:
SQL> select circuit,saddr,status,queue from v$circuit;
CIRCUIT SADDR STATUS QUEUE
-------- -------- ---------------- ----------------
27434010 296F8CE4 NORMAL NONE
2743471C 296FB24C NORMAL NONE
2 rows selected.
SQL>