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

来源:互联网 发布:淘宝自定义模块尺寸 编辑:程序博客网 时间:2024/05/17 00:03

oracle 共享服务进程模式


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

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

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

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

    到调度进程上面。

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

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

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

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

 

      涉及的参数:


  

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

 

     配置mts


 

 

 

 

从用户会话信息和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 。

 

然后重新启动数据库

 

 

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

 

  

如果修改为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:包含每一个当前会话的信息