oracle共享用户,ORACLE配置共享服务模式

Configuring Oracle Database for Shared Server

专用模式(Dedicated)和共享(Shared)模式说明

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

dedicated模式,一个客户端请求,数据库就会对应起一个进程进行处理,一对一服务

Shared模式,一个后台数据库进程服务多个客户端请求,一对多服务

打个比方,dedicated就打你坐出租车,就为你一个服务,Shared就是公交车,同时为很多人服务

专用模式原理图:

共享模式原理图:

1.转发器Dispatcher接受到用户端的请求

2.请求被置入Request队列,并建立了类似电路的一条回路Circurt用来标识请求是来自哪个Client。

3.某个闲置的Server Process开始处理队列中的请求

4.SGA内存分配

5.将处理的结果置入Response队列

6.结果从Response Queue返回给Dispatcher

7.Dispatcher将结果最终返回给当初的Client

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

Shared与Dedicated的内存比较

假设一个应用程序访问Oracle的每个Session需要400KB的内存,每个服务进程的内存需要4MB,所分配的共享服务进程数为100个。现在有5000个客户连接,

则在Dedicated模式下:

内存=5000 * (400KB+4MB) = 22GB

Shared模式下:

内存=5000 * 400KB + 100 * 4MB = 2.5GB

配置Dedicated Server

Oracle默认的Server Process是Dedicated,因此无需特殊配置,只要在Client的连接方式上声明Server为DEDICATED。比如Oracle Client的tnsname.ora文件声明如下:

如:

test =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = test)

)

)

配置共享模式

共享模式可以在线通过alter system命令配置

有关共享模式的初始化参数说明

SHARED_SERVERS:指定数据库启动时和平时运行时最少的后台服务进程数量,只要指定这个参数大于0即表示启用了共享模式

MAX_SHARED_SERVER:指定最大的后台服务进程数量

SHARED_SERVER_SESSION:指定最大的以共享方式连接的session数,通过数据库总的session数配合,可以预留一定数量的专用模式连接数

DISPATCHERS:用于配置共享模式架构中dispatcher进程

MAX_DISPATHCERS:指定同时能运行的dispatcher进程数量,这个参数在10G还没有,是为了将来能根据客户端并发连接数自动调节dispatcher进程数量而设计的

CIRCUITS:指定虚拟环路数量

启用共享模式

当shared_servers初始化参加被设为大于0时就表过启用了共享模式,其它参数都不是必需的。因为共享模式只少需要一个dispatcher进程,因此如果没有配置dispatcher参数,系统将默认起一个dispatcher进程。

共享模式可能通过alter system设置SHARED_SERVERS为非0值动态启动。如果有初始化文件中没有设置SHARED_SERVERS或者设置为0,则共享模式不会在数据库启动时生效。

配置dispatchers

Dispatchers参数用于配置共享模式架构中dispatcher进程,共享模式只少需要一个dispatcher进程。如果你没有指定dispatcher参数,但又把SHARED_SERVER设为非0值启用了共享模式,这样数据库会缺省创建一个TCP协议的dispather,等同于设置为dispatchers="(PROTOCOL=tcp)"

如果你需要配置其它dispatcher,你可能通过指定以下属性:

ADDRESS

DESCRIPTION

PROTOCOL

还有以下附加属性可以指定:

DISPATHCERS

CONNECTIONS

SESSIONS

TICKS

LISTENER

MULTILEX

POOL

SERVICE

属性说明:

ADDRESS:指定dispathers监听的网络地址

DESCRIPTION Specify the network description of the endpoint on which the dispatchers listen, including the network protocol address. The syntax is as follows:

(DESCRIPTION=(ADDRESS=...))

PROTOCOL Specify the network protocol for which the dispatcher generates a listening endpoint. For example:

(PROTOCOL=tcp)

DISPATCHERS:指定dispathers数量

CONNECTIONS:第个dispatcher最大允许的最大连接数

TICKS:启用连接池时,连接空闲超时时间,以10分钟为单位,1表示10分钟,2表示20分钟

POOL:是否起用连接池

SERVICE:指定dispathers注册的service

以上属性名称关键字,你可以用3位或3位以上的缩写,如你需要指定sessions=3,你可以写成ses=3,sess=3或sessi=3类似方式

具体配置举例:

5个TCP/IP协议dispathers,3个SSL TCP/IP协议dispathers:

DISPATCHERS=’(PORT=tcp)(DISP=5)’,’(PORT=tcps)(DISP=3)’

简单的dispatchers参数设置

DISPATCHERS="(PROTOCOL=TCP)(DISPATCHERS=2)"

指定IP的dispatchers参数设置DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(HOST=144.25.16.201))(DISPATCHERS=2)"

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

指定端口的例子DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5000))"DISPATCHERS="(ADDRESS=(PROTOCOL=TCP)(PORT=5001))"

说明一下,dispatchers配置好后,就算监听不起,客户端也能通过dispatcher配置连接上数据库

修改dispatchers方法

这里介绍一下index的使用方法

举例说明:如果原来的配置为

DISPATCHERS='(PROT=tcp)(DISP=2)', '(PROT=tcps)(DISP=2)'

你想修改tcp/ip协议的dispatcher从2->3,SSL tcp/ip的dispathcer从2->1,语法为:

ALTER SYSTEM SET DISPATCHERS = '(INDEX=0)(DISP=3)', '(INDEX=1)(DISP=1)';

or

ALTER SYSTEM SET DISPATCHERS = '(PROT=tcp)(DISP=3)', '(PROT-tcps)(DISP=1)';

这里第一种方法的index=0表示修改第一个dispatcher设置,index=1表示第二个,由此可见index用来指定第几个dispatcher

关闭dispatherSELECT NAME, NETWORK FROM V$DISPATCHER;

从v$dispather视图找出唯一的名字,以Dnnn命名,如D002

然后用alter system shutdown immediate ‘D002’关闭这个dispather

其中immediate关键字可以省略,如果不指定immediate,等所有用户连接退出后才会被关闭

关闭共享模式

设置shared_servers参数为0即可,设置为0后,新的客户端就不能以共享模式连接数据库了,但以有的会话会被继续处理,直到连接关闭然后清空dispathers参数设置ALTER SYSTEM SET DISPATCHERS = '';

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

监控共享模式

The following views are useful for obtaining information about your shared server configuration and for monitoring performance.

View

Description

V$DISPATCHER

Provides information on the dispatcher processes, including name, network address, status, various usage statistics, and index number.

V$DISPATCHER_CONFIG

Provides configuration information about the dispatchers.

V$DISPATCHER_RATE

Provides rate statistics for the dispatcher processes.

V$QUEUE

Contains information on the shared server message queues.

V$SHARED_SERVER

Contains information on the shared servers.

V$CIRCUIT

Contains information about virtual circuits, which are user connections to the database through dispatchers and servers.

V$SHARED_SERVER_MONITOR

Contains information for tuning shared server.

V$SGA

Contains size information about various system global area (SGA) groups. May be useful when tuning shared server.

V$SGASTAT

Contains detailed statistical information about the SGA, useful for tuning.

V$SHARED_POOL_RESERVED

Lists statistics to help tune the reserved pool and space within the shared pool.

检查当前Session连接的服务模式

配置二个tnsname,test_d以dedicated方式,test_s以shared方式

test_d=

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = test)

)

)

test_s =

(DESCRIPTION =

(ADDRESS_LIST =

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

)

(CONNECT_DATA =

(SERVER = SHARED)

(SERVICE_NAME = test)

)

)

分别以test1(用test_d连接)和test2(用test_s连接)两个用户登录数据库,在闲置状态下查看当前会话:

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

SQL> select schemaname, server, program from v$session;

SCHEMANAMESERVERPROGRAM

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

test1DEDICATEDsqlplus.exe

test2NONEsqlplus.exe注意此处的NONE

让用户test2的会话处于active状态,如让test2用户执行:

SQL> begin

2for i in 1..500000 loop

3dbms_lock.sleep(1);

4end loop;

5commit;

6end;

7/

查看session

SQL> select schemaname, server, program from v$session;

SCHEMANAMESERVERPROGRAM

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

test1DEDICATEDsqlplus.exe

test2SHAREDsqlplus.exe

可以看到test2当前是由Shared Server Process服务。

作者:George.ma blog:http://blog.chinaunix.net/u/12521/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值