4.5.3 如何设置共享连接模式

要将数据库服务器的连接模式从专用模式改为共享模式其实是很简单的,只要将初始化参数SHARED_SERVERS的值设置为一个大于0的整数即可,其余几个初始化参数都不是必须设置的。在共享模式中至少需要一个调度器,因此,当把连接模式改为共享模式之后,在数据库服务器中将自动启动一个调度器。

如果把初始化参数SHARED_SERVERS的设置放在参数文件中,那么当数据库服务器启动时就处于共享连接模式。如果在参数文件中没有对这个参数进行设置,但是同通过初始化参数DISPATCHERS至少设置了一个调度器,那么数据库服务器启动时也处于共享连接模式。

如果数据库是通过DBCA创建的,在数据库中将有一个为XDB协议配置的调度器,而且初始化参数SHARED_SERVERS值为1。只要用户访问Oracle的XML DB服务,就连接到一个共享服务器进程上。这并不意味着数据库服务器目前就使用了共享连接模式,这时还需要设置更多的共享服务器进程和调度器。

Oracle推荐的共享服务器进程数目设置原则为:每10个客户端进程对应一个服务器进程。数据库管理员可以根据客户端进程的大致数目,设置共享服务器进程的数目,而且在数据库服务器运行的过程中,可以根据实际情况,随时调整服务器进程的数目。例如:


SQL>ALTER SYSTEM SET shared_servers=5;


共享服务器进程的相关信息可以从动态性能视图v$shared_server中获得。服务器的命名规则是Snnn,其中nnn是从000开始的三位整数。例如,下面的SELECT语句用于查询共享服务器进程的名称和状态:


SQL>SELECT name, status FROM v$shared_server;

NAME STATUS

S000 WAIT(COMMON)

S001 WAIT(COMMON)

S002 WAIT(COMMON)

S003 WAIT(COMMON)

S004 WAIT(COMMON)


如果将数据库服务器的连接模式设置为共享模式,那么至少需要设置一个调度器。在默认情况下,数据库服务器将为TCP协议设置一个调度器。根据客户端与服务器端通信的实际情况,需要为每种通信协议设置一个调度器。对于TCP/IP协议,需要指定调度器所监听的IP地址和端口号。例如,下面的语句将使用TCP/IP协议的调度器的数目设置为3:


SQL>ALTER SYSTEM SET DISPATCHERS=

"(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100))(DISPATCHERS=3)";


调度器的相关信息可以从动态性能视图V$DISPATCHER中获得。调度器的命名规则是Dnnn,其中nnn是从000开始的三位整数。例如,下面的SELECT语句用于查询调度器的名称、所用协议、状态等信息:


SQL>SELECT name, network, status FROM v$dispatcher;

NAME NETWORK STATUS

D000(ADDRESS=(PROTOCOL=tcp)(HOST=sunday)(PORT=49157))WAIT

D001(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100))WAIT

D002(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100))WAIT

D003(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.100))WAIT