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)组成. 库高速缓存 ...
随机推荐
- SSH MVC
1.MVC(Model-View-Controller)设计模式: 首先让我们了解下MVC(Model-View-Controller)的概念: MVC全名是Model View Controller ...
- Android Mokoid Open Source Project hacking
/***************************************************************************** * Android Mokoid Open ...
- Mysql隔离级别 sql示例理解
前言 事务要解决的是多线程并发修改数据库的问题.Mysql innodb 引擎支持事务.类似 Java 中的各种锁,例如乐观锁(CAS),读写锁,悲观锁.事务也有很多级别. 每个隔离级别要解决的问题都 ...
- 使用Visual Studio Code开发Asp.Net Core WebApi学习笔记(二)-- Web Api Demo
在上一篇里,我已经建立了一个简单的Web-Demo应用程序.这一篇将记录将此Demo程序改造成一个Web Api应用程序. 一.添加ASP.NET Core MVC包 1. 在project.json ...
- 利用GPU改善程序性能的一点心得
1. 硬件方面 a. 流处理器个数 Gpu内部的计算单元个数,决定分析模块实时性的关键因素. 实测效果: gtx760 1152个 Gtx960 1024个 单路1080p运动 ...
- day3 自动部署安装软件到其他的机器设备上
PS:原理是在本机创建boot.sh指向每一台主机,使用脚本命令去执行,然后就会自动安装软件 PS:boot.sh里面放着1.免密登录 2.发送每台机器install.sh 这个install.sh中 ...
- DDD领域驱动设计 ---- 系列文章
C#进阶系列——DDD领域驱动设计初探(七):Web层的搭建 C#进阶系列——DDD领域驱动设计初探(六):领域服务 C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用 C#进阶系 ...
- 复制IE缓存里多个文件的方法
IE8缓存地址可以自己设置,要复制里面的文件,需要点小技巧: 真正的文件在E:\baidu download\Internet 临时文件\content.ie5下面:E:\baidu download ...
- cookie、localStorage、sessionStorage 的生命周期
生命周期 存储 生命周期 cookie 没有设置 expires 选项时,cookie 的生命周期仅限于当前会话中,关闭浏览器意味着这次会话的结束,所以会话 cookie 仅存在于浏览器打开状态之下. ...
- netty 知识点
Netty:异步.事件驱动的NIO(非阻塞Non-blocking IO)框架 netty 教程:http://wiki.jikexueyuan.com/project/netty-4-user-gu ...