oracle共享与专用模式的动态转换及区别(转载)
,让我实践了一把,确实明白了许多。以下大多是转自该链接的,将其收藏,供以后方便查找学习。
专用服务器(DEDICATED):一个客户端连接对应一个服务器进程
共享服务器具有以下一些缺点:
1)共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。
2)存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。
3)存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。
4)共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner,并且SQL_TRACE没有意义(因为是共享而不是当前会话的)。
MTS减少的内存实际上是专用服务器模式下每个用户连接到操作系统进程所需的内存,但它却使用SGA的Large_Pool来分配UGA,拆东墙补西墙,所减少的内存是很少的。如果用户会话的连接和断开很频繁,数据库进程的创建和删除的开销会非常大,这种情况最好采用共享服务器模式(否则,应该使用连接池技术)。如果客户端一次连接终身使用(会话生命周期内),使用共享服务器模式的意义不大。因为大部分时间,一个会话就连接到一个服务器进程,无法共享服务器进程。
共享服务初始化参数的一些说明:
shared_servers :指定了当instance 启动的时候 shared server process 启动的数量,不要将这个参数设置得太大,否者启动数据库instance 的时候
就会花更多时间,Oracle启动过后会根据负载来动态调整shared_servers。如果为0,表示数据库没有启动共享服务模式。 这个参数是
配置shared server 必须的,而且只有这个参数是必须的。
--修改参数: alter system set shared_servers=1;
max_shared_servers:ORACLE在同一个时刻最大能够使用的 shared server process.不要将这个参数设置小于 shared_servers,如果动态修改
shared_servers大于max_shared_servers,ORACLE会覆盖max_shared_servers的值,此时你需要修改max_shared_servers.
同时也不能大于processes。这个参数是为了给占用很大资源操作而设的(批处理),为了预留一些process 给DBA任务(rman备份),
shared_server_sesions: 指定了总共允许的的 shared server session 的数量。如果设置了这个参数,那么就不要将这个值超过sessions,如果没有
设置这个值,那么只要还有空闲的session,就可以被使用。设置这个值是为专有连接预留 user sessions.
dispatchers(调度进程):配置 dispatcher process .如果不设置这个参数,只要设置了shared_servers,oracle 也会自动设置一个基于tcp协议的dispatcher。
还需要查看操作系统支持一个dispatcher能处理多少个connections
SQL> select * from v$dispatcher;
max_dispatchers: 设置同一时刻能够同时运行的dispatchers的数量,必须大于等于 dispatchers ,小于processes。这个参数也会被dispatchers覆盖。
关闭调度进程:
首先要查询到DISPATCHERS的NAME: SELECT NAME,NETWORK FROM V$DISPATCHER;
然后关闭调度进程:ALTER SYSTEM SHUTDOWN IMMEDIATE 'D000';
circuits(虚拟回路):指定了virtual circuits 的总数量。
SQL> select * from V$CIRCUIT;
关闭共享模式:
将 shared_servers 参数置为0(alter system set shared_servers=0;),那么所有以共享方式连接到数据库都不能成功,但是未释放的共享
连接会继续 保持连接,直到断开。如果将 shared_servers 和 max_shared_servers 都设为0(alter system set max_shared_servers=0;),
那么共享连接将被终结。所有的共享方式连接都断开了的话,就可以使用 alter system set dispatcher=''; 将dispatcher清除,防止下次启动
数据库又打开了共享连接方式。
判断oracle是共享模式还是专用模式的方法:
1. show parameter shared_server; (注:8i应为:show parameter mts_servers;)
SQL> show parameter shared_server;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
max_shared_servers integer 0
shared_server_sessions integer
shared_servers integer 0 --为0表示专用模式
2. 查看v$session 视图
SQL> Select username,server,program from v$session where username is not null;
USERNAME SERVER PROGRAM
--------- --------- -------------------
GWM NONE
SYS SHARED plsqldev.exe
SYS SHARED plsqldev.exe
SYS DEDICATED sqlplus.exe --专用模式
3. 查看监听: lsnrctl service
$ lsnrctl service
LSNRCTL for IBM/AIX RISC System/6000: Version 10.2.0.1.0 - Production on 08-MAR-
2011 14:28:08
Copyright (c) 1991, 2005, Oracle. All rights reserved.
Connecting to (ADDRESS=(PROTOCOL=tcp)(HOST=)(PORT=1521))
Services Summary...
Service "telemt" has 1 instance(s).
Instance "telemt", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:6 refused:0 state:ready
LOCAL SERVER
"D000" established:51 refused:0 current:3 max:1022 state:blocked
DISPATCHER <machine: ossdb2, pid: 504060>
(ADDRESS=(PROTOCOL=tcp)(HOST=loopback)(PORT=53932))
Service "telemt_XPT" has 1 instance(s).
Instance "telemt", status READY, has 2 handler(s) for this service...
Handler(s):
"DEDICATED" established:6 refused:0 state:ready
LOCAL SERVER
"D000" established:51 refused:0 current:3 max:1022 state:blocked
DISPATCHER <machine: ossdb2, pid: 504060>
(ADDRESS=(PROTOCOL=tcp)(HOST=loopback)(PORT=53932))
The command completed successfully
4.查看TNSNAMES.ora 文件。如:
IGISDB =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 134.74.21.51)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = telemt)
(SERVER = DEDICATED)
)
)
这里是以DEDICATED 专用模式连接 telemt 实例。写上 (SERVER = SHARED) 则是使用共享服务器模式,但是这时shared_server_process需要
打开(即oracle服务器的shared_servers参数要设置为共享模式),要不然会出错连不上oracle(ora-12520:TNS:监听程序无法为请求的服务器类型找
到可用的处理程序)。
要是这段放空没写,那么系统会根据服务器模式自动调节,不过根据实测结果,就算服务器是定义成共享服务器模式,shared_server_process没打
开的情况下,在v$session中查到的连接依然是SERVER = DEDICATED。所以基本上我们这段话都是可以放空着不写的,但是有时候要连上我们的共享服务
器模式的数据库,放空有可能系统认为要用共享服务器方式去连,因此最好声明 SERVER = DEDICATED 采用专用服务器方式去连接。
在数据库启动的时候,如果没有指定shared_servers,但是设置了dispatchers,那么ORACLE就认为启动了shared server ,并且设置
shared_servers为1。 在数据库启动的时候,没有设置shared_servers,也没有设置dispatchers,即使以后修改了dispatchers,也不能启动
shared server,必须重新启动数据库。
http://www.cnblogs.com/lanzi/archive/2011/03/08/1977317.html
oracle共享与专用模式的动态转换及区别(转载)的更多相关文章
- Oracle 专用模式(DEDICATED) 和 共享模式(SHARE) (转)
Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...
- Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)
一. 官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...
- Oracle 专用模式(DEDICATED) 和 共享模式(SHARE)
Oracle 是一门博大精深的技术.玩了2年的oracle,依旧还有很多知识点不清楚. 昨天群里的朋友提到了 DEDICATED 和 SHARE 两种模式. 不清楚,默默的做点功课了.从网上搜了点知识 ...
- [20191113]oracle共享连接模式端口2.txt
[20191113]oracle共享连接模式端口2.txt --//昨天的测试链接:http://blog.itpub.net/267265/viewspace-2663651/=>[20191 ...
- [20191112]oracle共享连接模式端口.txt
[20191112]oracle共享连接模式端口.txt --//如果使用共享服务模式,你可以发现每次重启数据库对应的端口号会发生变化.# netstat -tunlp | egrep "A ...
- Oracle启动和归档模式
数据库运行 Oracle数据库的完整启动过程是分步骤完成的,包含以下3个步骤: 启动实例–>加载数据库–>打开数据库 因为Oracle数据库启动过程中不同的阶段可以对数据库进行不同的维护操 ...
- 基于NFS共享存储实现KVM虚拟机动态迁移
基于NFS共享存储实现KVM虚拟机动态迁移 一:配置环境 二:安装相关的依赖包 三:实现NFS共享存储 四:KVM机配置相同的步骤 五:安装KVM01安装虚拟机 六:实现迁移 实验初始配置:所有主机 ...
- 深度剖析Istio共享代理新模式Ambient Mesh
摘要:今年9月份,Istio社区宣布Ambient Mesh开源,由此引发国内外众多开发者的热烈讨论. 本文分享自华为云社区<深度剖析!Istio共享代理新模式Ambient Mesh>, ...
- oracle 共享池( shared pool )
Oracle共享池 Oracle共享池(Share Pool)属于SGA,由库高速缓存(library cache)和数据字典高速缓存(data dictionary cache)组成. 库高速缓存 ...
随机推荐
- 374. Guess Number Higher or Lower 简单的二分法运用
We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to gues ...
- dependencies与dependencyManagement的区(转自:http://blog.csdn.net/liutengteng130/article/details/46991829)
在上一个项目中遇到一些jar包冲突的问题,之后还有很多人分不清楚dependencies与dependencyManagement的区别,本篇文章将这些区别总结下来. 1.DepencyManagem ...
- 什么叫做VC维
参考<机器学习导论> 假设我们有一个数据集,包含N个点.这N个点可以用2N种方法标记为正例和负例.因此,N个数据点可以定义2N种不同的学习问题.如果对于这些问题中的任何一个,我们都能够找到 ...
- matlab学习笔记 函数bsxfun repmat
一.举例 a=rand(3,1);b=rand(1,3); c=bsxfun(@plus,a,b); d=a*b; c和d的运算类似,只不过c是外加,d是外乘. 作用:速度快>for循环> ...
- Error: map 不是模板
问题: 笔者在自定义的namespace中使用map的时候,出现如题所示的问题. Error: map 不是模板 解决 百思不得其解. 然后Google到一片CSDN博文的类似问题 vector不是模 ...
- 一步步入门log4cpp
前言 项目实现过程中,需要检查.查找或者调试程序bug等,此时程序日志则较为清晰地展现代码的运行过程.目前接触到的方法有打印消息到控制台,将重要信息输出到某个文件比如txt文件,或者直接使用日志库. ...
- MyEclipse多次重装、删除注册表、重装系统激活都不成功,终极解决方法 - imsoft.cnblogs
问题:注册成功的MyEclipse被修改了一个配置文件之后,激活失败,然后在网上找激活码,激活不成功,但激活文件一直保存在电脑中,每次打开MyEclipse的激活界面总看得到之前的激活码.后面尝试 ...
- MySQL Disk--SSD与RAID
===================================================SSD与RAID 51.在RAID 5这类Parity-RAID上存在partial-stripe ...
- 升级CentOS 7.4内核版本的三种方案
https://blog.csdn.net/breeze915/article/details/79243673 在实验环境下,已安装了最新的CentOS 7.4操作系统,现在需要升级内核版本. 实验 ...
- coffeescript学习
test2.coffeestdin = process.openStdin()stdin.setEncoding 'utf8' stdin.on 'data', (input) -> n ...