您的位置:首页 > 数据库 > Oracle

oracle专用模式与共享模式

2014-01-02 11:39 330 查看
oracle的服务器进程分为:专用(DEDICATED)服务器进程和共享(SHARED)服务器进程

select server from v$session;

专用服务器:一个客户端连接对应一个服务器进程

   共享服务器:多个客户端连接对应一个服务器进程,服务器端存在一个进程调度器来管理。

一、专用服务器进程

数据库服务器要求每个用户拥有一个专用服务器进程,当用户比较多的时候,则其对服务器的硬件资源,特别是内存,会产生比较大的压力。

适用环境:

1、
只有少数客户端。

2、 为数据仓库搭建的数据库系统。

3、 联机事务处理系统。(大事务的处理,若使用共享服务器模式,很有可能会造成有些事务需要进入队列排队,响应时间拉长)

二、共享服务器进程

多个用户程序可以并发共用一个服务器进程,客户端程序通过调用调度程序与服务器进程相连



如何查看是否是共享服务器模式?

1 查看调度程序

SQL> show
parameter dispatchers;

NAME
TYPE VALUE

------------------------------------ ----------- -----------------------------

dispatchers
string (PROTOCOL=TCP) (SERVICE=sdecp

yXDB)

max_dispatchers
integer 5

mts_dispatchers
string (PROTOCOL=TCP) (SERVICE=sdecp

yXDB)

mts_max_dispatchers
integer 5

2、查看共享服务器进程数

SQL> show parameter shared_servers;

NAME
TYPE VALUE

------------------------------------ ----------- -----------------------------

max_shared_servers
integer 20

shared_servers
integer 1

3、预留

SQL> show
parameter shared_server_session;

NAME
TYPE VALUE

------------------------------------ ----------- ---------

shared_server_sessions
integer 165

其中

dispatchers:调度程序服务器进程

max_shared_servers :指定同时运行的最大服务器进程数

shared_servers :启动实例时可以创建的服务器进程数

shared_server_sessions:指定用于用户会话的总数,配置此参数可为专用服务器保留用户会话

4.改变进程数

SQL> alter
system set shared_servers=2;

系统已更改。

SQL>alter system
set max_shared_servers=20;

系统已更改。

SQL> show
parameter shared_servers;

NAME
TYPE VALUE

------------------------------------ ----------- -------------------------

max_shared_servers
integer 20

shared_servers
integer 2

SQL>

优点是客户端进程多对一,增加了数据库可以支持的用户数。缺点就是各个用户共享一个进程,对用户访问数据库的性能有所影响。

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

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

  2)存在人为死锁的可能,因为它是串行的,只要一个连接阻塞,则该服务器进程上的所有用户都被阻塞,并且极可能死锁。

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

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

NAME

TYPE VALUE

-------------------------------------------------- -----------
----------------------------------------------------------------------------------------------------

hi_shared_memory_address
integer 0

max_shared_servers
integer
20

shared_memory_address
integer 0

shared_pool_reserved_size
big integer 6081740

shared_pool_size
big integer 0

shared_server_sessions
integer

shared_servers
integer
2

把服务器从共享服务器模式改为专用服务器模式

alter system set shared_servers = 0 scope = both;--已经存在的共享进程需要等到会话结束才能结束



alter system set max_share_servers=0 scope=both;--立即强制结束所有共享服务器进程

ORACLE用户文档

In DedicatedServer Mode, there is a dedicated server process for each user
process.

  Select this option whenthe number of total clients is
expected to be small, or when

  database clients willmake persistent, long-running
requests to the database.

  In Shared Server Mode,several client connections share a
database-allocated pool of

  resources. Use this modewhen a large number of users need
to connect to the

  database. It is alsouseful when database memory is
limited and for better

  performance, since youcan have more client connections to
the database than in

  dedicated server modewith the same memory. If you choose
shared server mode, you

  must also indicate thenumber of server processes you want
to create when an instance

  is started up. For moreinformation about setting this
parameter, click Help.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: