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:包含每一个当前会话的信息
相关文章推荐
- 独立进程和共享进程是什么意思?服务类型中独立、共享进程服务
- PHP CLI模式下PCNTL扩展实现多进程服务
- 将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux,第 1 部分: 进程、线程和共享内存服务 (转载)
- 信息分析——共享经济服务模式的分析与研究
- linux 守护进程独立模式和xinetd超级管理模式
- 进程的独立的用户空间和共享的内核空间
- 基于xposed实现android注册系统服务,解决跨进程共享数据问题
- Linux文件共享(二)——两个独立进程打开同一个文件
- linux 线程的内核栈是独立的还是共享父进程的?
- 虚拟机ubuntu10.10与xp共享文件夹(samba服务模式)
- 虚拟机ubuntu10.10与xp共享文件夹(samba服务模式)
- 共享服务模式和直接路径读
- oracle专有和共享服务模式
- (原创)使用aidl进程间通讯并开启独立进程的服务仿下载监听回调等场景
- 关于系统服务、进程、共享文件夹管理的几个方式
- Sping2.5配置文件的单例共享模式与独立产生实例,同步方法使用
- python 简单搭建非阻塞式单进程,select模式,epoll模式服务
- 将 Win32 C/C++ 应用程序迁移到 POWER 上的 Linux,第 1 部分: 进程、线程和共享内存服务
- 同一进程间的线程共享和独立的资源
- 父子进程共享模式下的epoll_wait