天天看点

Oracle的专用数据库和共享数据库区别

专用服务器进程(Dedicated server)

对于专用服务器配置,在登录时,Oracle总会创建一个新的进程,这个服务器进程会在会话生存期中专门这个连接服务。对于每个会话,都会出现一个新的专用服务器,会话与专用服务器之间存在一对一的映射。按照定义,这个专用服务器不是实例的一部分用户进程和服务器进程是分开的。每个用户进程都有自己的服务器进程。

用户进程和服务器进程可在不同的机器上运行,以利用分布式处理的优势。

用户进程和服务器进程的比率是1 比1。

即使用户进程不发出数据库请求,专用服务器也存在,只是保持空闲状态。

何时使用专用服务器

提交批作业(预计很少有或没有空闲时间)

以sysdba 身份连接以启动、关闭或执行恢复

要请求使用专用服务器,必须在tnsnames.ora 文件内的Oracle Net TNS 连接字符串中

包含SERVER=DEDICATED 子句。

注:对于大多数平台来说,如果您的机器有足够的内存支持专用服务器,则应使用专用服

务器。这样性能可能更好些。

但也有例外,例如Windows NT,在该系统中,由于共享服务器体系结构的异步特性,使

用Oracle Shared Server 配置性能可能会有所提高。

如何连接专用服务器

在客户端服务器中的tnsnames.ora文件里进行设置:

dedicated =(DESCRIPTION =

(ADDRESS_LIST =

(ADDRESS = (PROTOCOL = TCP)(HOST =192.168.1.52)(PORT = 1521))

)

(CONNECT_DATA =

(SERVICE_NAME = itpux)

(server = dedicated)

共享服务器(shared server),正式的说法是多线程服务器(Multi-Threaded Server)或MTS。如果采用这种方式,就不会对每条用户连接创建另外的线程或新的UNIX 进程

Oracle Shared Server 的优点

减少针对某一例程的进程数目

增加可服务的用户数

实现负载平衡

减少空闲服务器进程的数目

减少内存占用和系统开销

如何连接共享服务器

不能使用共享服务器执行某些类型的数据库工作:

数据库管理

备份和恢复操作

批处理和批量加载操作

数据仓库操作

共享服务器具有以下一些缺点

一般我们以oracle默认的专用服务器方式就行了,没必要使用共享服务器模式。一个是我们是使用中间件(如:weblogic)去连oracle的,中间件本身有连接池机制,另外就是oracle的这个共享服务器方式也做的不够好了,有诸多缺点。

1)共享服务器的代码路径比专用服务器长,所以它天生就比专用服务器慢。

2)存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。 ITPUX 技术网(http://www.itpux.com),中国最专业最全面的 IT 行业技术网站。

3)存在独占事务的可能,因为如果一个会话的事务运行时间过长,它独占共享资源,其它用户只能等待,而专用服务器,每个客户端是一个会话。

4)共享服务器模式限制了某些数据库特性,例如:不能单独启动和关闭实例,不能进行介质恢复,不能使用Log Miner,并且SQL_TRACE没有意义(因为是共享而不是当前会话的)。

怎么知道oracle当前是 DEDICATED SERVER 还是 SHARED SERVER?

最简单的一个方法是查看监听: lsnrctl service

<code>[grid@udevasm:</code><code>/home/grid</code><code>]$lsnrctl service</code>

<code>LSNRCTL </code><code>for</code> <code>Linux: Version 11.2.0.4.0 - Production on 15-JUL-2017 13:07:31</code>

<code>Copyright (c) 1991, 2013, Oracle.  All rights reserved.</code>

<code>Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1521)))</code>

<code>Services Summary...</code>

<code>Service </code><code>"+ASM"</code> <code>has 1 instance(s).</code>

<code>  </code><code>Instance </code><code>"+ASM"</code><code>, status READY, has 1 handler(s) </code><code>for</code> <code>this service...</code>

<code>    </code><code>Handler(s):</code>

<code>      </code><code>"DEDICATED"</code> <code>established:0 refused:0 state:ready</code>

<code>         </code><code>LOCAL SERVER</code>

<code>Service </code><code>"db01"</code> <code>has 1 instance(s).</code>

<code>  </code><code>Instance </code><code>"udevasm"</code><code>, status READY, has 1 handler(s) </code><code>for</code> <code>this service...</code>

<code>      </code><code>"DEDICATED"</code> <code>established:8 refused:0 state:ready</code>

<code>Service </code><code>"udevasm"</code> <code>has 1 instance(s).</code>

<code>Service </code><code>"udevasmXDB"</code> <code>has 1 instance(s).</code>

<code>      </code><code>"D000"</code> <code>established:0 refused:0 current:0 max:1022 state:ready</code>

<code>         </code><code>DISPATCHER &lt;machine: udevasm, pid: 2469&gt;</code>

<code>         </code><code>(ADDRESS=(PROTOCOL=tcp)(HOST=udevasm)(PORT=10275))</code>

<code>The </code><code>command</code> <code>completed successfully</code>

<code></code>

本文转自xiaocao1314051CTO博客,原文链接: http://blog.51cto.com/xiaocao13140/1947928,如需转载请自行联系原作者