当前位置:首页 > CN2资讯 > 正文内容

用服务器和共享服务器?共享服务器

4天前CN2资讯

题目部分

在Oracle中, 什么是专用服务器和共享服务器?

答案部分

在连接到Oracle数据库的时候,可以有两种连接模式,一种叫做专用服务器连接(Dedicated Server),另外一种叫做共享服务器连接(Shared Server)。下面将分别讲解这两种连接方式的不同点。

专用服务器:每次在对Oracle进行访问的时候,Oracle服务器的Listener会得到这个访问请求,然后会为这个访问创建一个新的进程来进行服务。所以说,对于每一个客户端的访问,都会生成一个新的进程进行服务,是一种类似一对一的映射关系。这种连接模式的一个很重要的特点就是UGA(User Global Area,用户全局区)是存储在PGA(Program Global Area,程序全局区)中的,这个特性也很好说明了当前用户的内存空间是按照进程来进行分配的。专用服务器连接模式是Oracle默认的连接模式。

共享服务器:也叫多线程服务器(Multi-Threaded Server,MTS)。若采用共享服务器模式的话,则在数据库初始化的时候就会创建一批服务器连接的进程,然后把这些连接进程放入一个连接池来进行管理。初始化的池中的进程数量在数据库初始化建立的时候是可以手动设置的。在连接建立的时候,Listener首先接收到客户端的建立连接的请求,然后Listener去生成一个叫做调度器(Dipatcher)的进程与客户端进行连接。调度器把客户端的请求放在SGA(System Global Area,系统全局区)的一个请求队列中,然后在共享服务器连接池中查找有无空闲的连接,然后让这个空闲的服务器进行处理。处理完毕以后再把处理结果放在SGA的相应队列中。调度器通过查询相应队列,得到返回结果,再返回给客户端。这种连接模式的优点在于服务器进程的数量可以得到控制,不大可能出现因为连接数过多而造成服务器内存崩溃。但是由于增加了复杂度以及请求相应队列,可能在性能上有所下降。

如果在前端使用了Weblogic的连接池,那么在数据库级别就没有必要再使用共享服务器了,因为这时的用户连接已经在Weblogic层面上得到了控制。其实专用服务器和共享服务器是可以并存的,即使使用了共享服务器,某些管理操作也是必须在专用服务器模式下来做的,比如STARTUP或SHUTDOWN。

(一)启用共享服务器

要切换到共享模式,可以使用以下步骤:

A.设置初始化参数SHARED_SERVERS大于0,然后重启数据库即可启动共享模式,SQL如下所示:

ALTER SYSTEM SET SHARED_SERVERS = 1 SCOPE=BOTH ;

ALTER SYSTEM SET MAX_SHARED_SERVERS = 5 SCOPE=BOTH ;

其中,SHARED_SERVERS指定了当实例启动的时候共享服务器进程启动的数量。如果这个参数的值为0,那么表示数据库没有启动共享服务模式。这个参数是配置共享服务器必须的,而且只有这个参数是必须的。MAX_SHARED_SERVERS是Oracle在同一个时刻最大能够使用的共享服务器进程数量。如果SHARED_SERVERS大于MAX_SHARED_SERVERS,那么Oracle会以SHARED_SERVERS参数的值覆盖MAX_SHARED_SERVERS。

B.设置DISPATCHERS参数,可以采用下面的方法设置:

ALTER SYSTEM SET DISPATCHERS="(PROTOCOL=TCP) (SERVICE=lhrdbXDB)";

其中,“PROTOCOL=TCP”表示的是协议,“SERVICE=lhrdbXDB”指定要采用共享服务器模式的服务名称。使用上面的模式指定只启动某个服务的共享模式,如果要设置所有服务都使用共享模式,则设置为:

ALTER SYSTEM SET DISPATCHERS='(PROTOCOL=TCP)';

C.在客户端的tnsnames.ora的文件中,在CONNECT_DATA设置一项中增加“(server=shared)”一项,即可使用共享服务器连接,如下所示:

orclasms =

(DESCRIPTION =

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

(CONNECT_DATA =

(SERVER = shared)

(SERVICE_NAME = orclasmXDB.lhr.com)

)

)

其中,SERVICE_NAME的值可以通过命令“lsnrctl services <listener name>”来查看,如下所示:

[root@rhel6lhr ~]# lsnrctl services LISTENER

。。。省略部分。。。

Service "orclasmXDB.lhr.com" has 1 instance(s).

Instance "ORCLASM", status READY, has 1 handler(s) for this service...

Handler(s):

"D000" established:1 refused:0 current:1 max:1022 state:ready

DISPATCHER <machine: rhel6lhr, pid: 33611>

(ADDRESS=(PROTOCOL=tcp)(HOST=rhel6lhr)(PORT=58010))

The command completed successfully

如果服务器端没有启动共享服务器模式,而客户端使用shared方式连接的话,那么会出现错误提示:“ORA-12520: TNS: 监听程序无法找到需要的服务器类型的可用句柄”。

如果同时把SHARED_SERVERS和MAX_SHARED_SERVERS都设置成0,那么共享服务器将关闭。

(一)判断会话的连接模式

可以从V$SESSION视图的SERVER列里查看:

SYS@orclasm > SELECT SERVER,COUNT(1) FROM V$SESSION GROUP BY SERVER;

SERVER COUNT(1)

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

DEDICATED 36

SHARED 1

NONE 1</machine: rhel6lhr, pid: 33611></listener name>

若显示的结果中有NONE或SHARED,则说明当前启动了共享服务器模式。其中,状态为NONE的会话表示当前共享服务器进程没有任务处理,若进程正在执行某些任务则会表现为SHARED状态。如果只显示有DEDICATED,则不能说明服务器就一定工作在专用服务器下面,此时只能说明有可能启动了共享模式,但是无连接。

此外,还可以通过视图V$SHARED_SERVER、V$DISPATCHER及V$CIRCUIT视图查询是否启用了共享服务器连接。若V$SHARED_SERVER有记录,且STATUS字段为“WAIT(COMMON)”,则说明启动共享;若STATUS为TERMINATED或者无记录,则说明没有启动共享服务器。V$DISPATCHER有无记录都不能说明启动共享服务器,只能说明是配置了DISPATCHERS参数。V$CIRCUIT有记录说明当前有使用共享模式的连接,无记录则不能判定服务器模式。其实通过命令“lsnrctl services <listener name>”也可以判断是否启用了共享服务器连接。

当服务器采用专用服务器模式时,客户端只能使用专用模式连接,也就是在CONNECT_DATA数据中只能使用“SERVER=DEDICATED”。当服务器采用共享服务器模式时,客户端可以选择建立共享连接或是专用连接,只要在CONNECT_DATA中指定“SERVER=DEDICATED”或“SERVER=SHARED”。

& 说明:

关于共享服务器和专用服务器的详细解析可以参考我的BLOG:http://blog.itpub.net/26736162/viewspace-2138307/。

    你可能想看:

    扫描二维码推送至手机访问。

    版权声明:本文由皇冠云发布,如需转载请注明出处。

    本文链接:https://www.idchg.com/info/20676.html

    分享给朋友:

    “用服务器和共享服务器?共享服务器” 的相关文章

    宝塔安装扩展不生效的解决方案与技巧

    在服务器管理的世界中,宝塔面板无疑是一款强大而受欢迎的工具。它让用户以更简单的方式进行服务器管理。通过宝塔,用户可以轻松管理网站、数据库和各种扩展。而PHPExcel等PHP扩展的安装显得尤为重要,因为它们提供了许多强大的功能,助力网站正常运行。 PHP扩展的重要性不言而喻。没有合适的扩展,网站可能...

    CN2 GIA是什么?探索高效国际网络连接的解决方案

    在当今这个数字化时代,网络连接的稳定性与速度成为了企业和个人活动的重中之重。CN2 GIA,或称为全球互联网接入(Global Internet Access),是由中国电信提供的一项高级国际专线网络服务。这项服务在CN2产品线中占据了顶级位置,专为那些需要快速且稳定的国际网络连接的用户而设计。通过...

    VPS CN2:提升网络性能的最佳选择

    在了解VPS CN2之前,我觉得有必要先简单说说VPS究竟是什么。VPS即虚拟专用服务器,是一种利用虚拟化技术将物理服务器划分成多个独立的虚拟服务器。每个VPS都能独立运行操作系统和应用软件,用户可以通过远程方式管理和使用。这给了我们极大的灵活性和自由度,让我可以随时根据需求扩大或缩小资源。 说到V...

    如何优化网络体验:VPS中转全面指南

    我一直对如何使用技术来优化我的网络体验感到好奇。最近,我发现了VPS中转这种神奇的方法。简单来说,VPS中转就是利用一台虚拟私人服务器(VPS),将我的网络流量转发到另一个指定的网络地址。这种功能主要用于加速访问某些海外网站,帮助我突破网络限制以及保护我的上网隐私等。 在日常使用中,我会遇到一些网站...

    波测评分析及其在医疗与教育领域的重要性

    波测评的定义与重要性 波测评是一种重要的技术手段,专注于评估波动的特性和行为。我发现,这种测评方法在多个行业中都扮演了至关重要的角色,比如医疗、工业和电力等领域。以脑波测评为例,它不仅可以帮助医生了解病人的大脑状态,还能在教育领域评估学习能力。这些应用展示了波测评技术在科学与技术进步中的不可或缺性。...

    连接测试地址的全面解析与故障排查技巧

    在网络管理和故障排查的过程中,连接测试地址扮演了重要角色。这些特定的IP地址并不指向任何实际的网络设备,因此在进行网络测试时,它们能够确保不会对现有的网络结构造成影响。简单来说,连接测试地址允许我们在不干扰现有设备的情况下,检查和验证网络的状态。 说到连接测试地址,我想起两个常见的:127.0.0....