您的位置:首页 > 其它

orace 共享服务进程模式和独立服务进程模式

2009-12-16 14:27 218 查看

oracle 共享服务进程模式

oracle 共享服务进程模式主要包含:网络监听进程,调度器,请求队列,共享服务进程,响应队列。

oracle 共享服务进程模式工作方式:

1,网络监听进程在数据库实例启动时开辟通信渠道为用户进程服务,当用户进程请求oracle资源时候首先与网络监听进程沟通。

2,网络监听进程接到用户进程请求后,分配负载最少的调度器为用户进程服务。这时候用户进程断开与网络监听进程的链接转而链接

到调度进程上面。

3,调度进程将用户请求放入请求队列等待共享服务进程分配资源。

4,共享服务进程处理完用户请求后将返回结果放入响应队列。

5,调度器从响应队列中取出返回结果返回给用户进程。

用户请求处理完毕后,用户进程和调度器不会断开链接。但是共享服务进程和资源已经释放,可以供其他用户使用。

涉及的参数:

mts_dispatchers ='(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1))(DISPATCHERS=1)' --共享服务的模式就和实例启动时候调度进程的数
mts_max_dispatchers 5  --最大调度进程数
mts_max_servers 20 --最大共享进程数
mts_servers  3 --初始共享服务进程数
mts_sessions 165 --每个调度器支持的最大会话


(dispatchers,max_dispatchsers,shared_servers,shared_max_shareds 相关参数因为版本不同所有有区别。9i中也能找到MTS_dispatchers(8i)参数。)

配置mts

SQL> select t.SID,t.USERNAME,server from v$session t;

SID USERNAME                       SERVER
---------- ------------------------------ ---------
19 SYS                            DEDICATED
20 PORTALDB                       DEDICATED

SID USERNAME                       SERVER
---------- ------------------------------ ---------
23 SYS                            DEDICATED
24 SYS                            DEDICATED


SQL> show parameter mts;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
mts_circuits                         integer     170
mts_dispatchers                      string      (PROTOCOL=TCP) (SERVICE=ora9iXDB)
mts_listener_address                 string
mts_max_dispatchers                  integer     5
mts_max_servers                      integer     20
mts_multiple_listeners               boolean     FALSE
mts_servers                          integer     3
mts_service                          string      ora9i
mts_sessions                         integer     165


ORA9I =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dzysqw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATE )
(SERVICE_NAME = ora9i)
)
)


从用户会话信息和tnsnames.ora文件看出现在是独立进程模式。如果修改tnsnames.ora文件的中server = SHERAD 然后等数据库就会出ora-12520错误。

为了不破坏spfile,所以使用pfile来修改数据到共享模式下。修改mts_dispatchers ='(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1))(DISPATCHERS=1)' (PROTOCOL指接入方式,HOST主机IP(如果写主机名就要保证能通过DNS解析出IP),DISPATCHERS指定调度器进程数) 如果mts_servers为1需要调整该参数大于>1(具体不知道,试验时候就是不行...)。

然后修改tnsnames.ora文件的中server = SHERAD 。

然后重新启动数据库

SQL> show parameter mts;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
mts_circuits                         integer     170
mts_dispatchers                      string      (ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1))(DISPATCHERS=1)
mts_listener_address                 string
mts_max_dispatchers                  integer     5
mts_max_servers                      integer     20
mts_multiple_listeners               boolean     FALSE
mts_servers                          integer     3
mts_service                          string      ora9i
mts_sessions                         integer     165


ORA9I =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dzysqw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATE )
(SERVICE_NAME = ora9i)
)
)


SQL> select t.SID, t.USERNAME, t.SERVER from v$session t;

SID USERNAME                       SERVER
---------- ------------------------------ ---------
19 SYS                            DEDICATED
20 PORTALDB                       DEDICATED

SID USERNAME                       SERVER
---------- ------------------------------ ---------
24 SYS                            DEDICATED
25 PORTALDB                       DEDICATED
26 SYS                            DEDICATED


修改后如果客户端tnsnames.ora中设置server = DEDICATED 则连接进来时以DEDICATED 方式接入。

ORA9I =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = dzysqw)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = ora9i)
)
)


SQL> select t.SID, t.USERNAME, t.SERVER from v$session t;

SID USERNAME                       SERVER
---------- ------------------------------ ---------
19 SYS                            SHARED
20 PORTALDB                       NONE
23 PORTALDB                       NONE
24 SYS                            SHARED


如果修改为SERVER = SHARED 则用户连接进来时候就是使用共享服务器模式。

独立服务进程模式

独立服务进程模式在使用DBCA创建数据就默认使用。在独立进程服务进程模式下所有用户会话信息都存放在PGA中而共享服务进程则是存放在SGA中。

在专用服务模式下,用户进程与服务进程总是保持一对一的关系。即使在用户没有提交数据库请求时,专用服务进程依然保持运行状态。每个用户连接进来都会分配一块PGA内存而且用户之间无联系。

总结

如果使用的是共享服务进程器模式则无法使用sysdba权限进行,例如:shutting down or starting an instance and media recovery等。这时候就需要设置SERVER 为DEDICATED 才能执行操作。

但是在独立服务进程模式中无法使用共享服务进程模式连接。

在共享服务进程器模式下无法使用snapshot来对数据库的运行状态进行分析,应为用户会话是交替使用资源的所以统计出来的结果不准确。

(在测试过程中我对MT_SERVERS进行了修改然后启动数据库的时候出来:ORA-32004: obsolete and/or deprecated parameter(s) specified错误,通过查看发现错误:(Deprecated system parameters with specified values:mts_servers End of deprecated system parameter listing) 主要是9i中不支持mts_servers(8i)参数导致 在网上到底解决方法:(alter system reset mts_servers scope=spfile sid ='*';) 在9i中设置shared_servers参数来替代mts_servers)

涉及视图

V$CIRCUIT:显示连接上来的用户进程
V$SHARED_SERVER:显示共享服务器进程信息
V$DISPATCHER:显示调度器进程的信息
V$SHARED_SERVER_MONITOR:包含调优共享服务器进程的信息
V$QUEUE:包含请求队列和应答队列的信息
V$SESSION:包含每一个当前会话的信息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: