文章目录
- 一、基础知识
-
- [1、 Server Configurations服务器配置](#1、 Server Configurations服务器配置)
- [2、Dedicated server process专用服务器进程](#2、Dedicated server process专用服务器进程)
- [3、Oracle Shared ServerOracle共享服务器](#3、Oracle Shared ServerOracle共享服务器)
- [4、Benefits of Shared Server 共享服务器的优点](#4、Benefits of Shared Server 共享服务器的优点)
- [5、Processing a Request 处理请求](#5、Processing a Request 处理请求)
- [6、Configuring Shared Server 配置共享服务器](#6、Configuring Shared Server 配置共享服务器)
- [7、Dedicated vs Shared 专用与共享](#7、Dedicated vs Shared 专用与共享)
- 二、基础操作
-
- 1、设置共享服务器模式
- [2、Verifying Setup 验证注册状态](#2、Verifying Setup 验证注册状态)

Usage and Configuration of the Oracle Shared Server Oracle共享服务器的使用和配置
目标:
- 确定Oracle共享服务器的组件
- 描述Oracle共享服务器架构
- 配置Oracle共享服务器
- 识别并解释相关数据字典视图的有用性
一、基础知识
1、 Server Configurations服务器配置
- Dedicated server process专用服务器进程
- Shared server process 共享服务器进程
- 专用服务器进程和共享服务器进程都有相同的工作:它们处理您交给它们的所有SQl。当您向数据库提交SELECT*FROM EMP查询时,Oracle专用/共享服务器进程会解析该查询并将其放入共享池(或者希望已经在共享池中找到它)。如果需要,这个过程会产生查询计划,并执行查询计划,可能在缓冲区缓存中找到必要的数据,或者将数据从磁盘读取到缓冲区缓存。
- 这些服务器进程是主力进程。很多时候,你会发现这些进程是你系统中CPU时间的最高消耗者,因为它们几乎完成了你的排序、求和和和连接。
2、Dedicated server process专用服务器进程
如前所述,Oracle通常会在我登录时为我创建一个新进程。这通常被称为专用服务器配置,因为在我的会话的生命周期中,一个服务器进程将专用于我。对于每个会话,将在一一映射中出现一个新的专用服务器。这个专用服务器进程 (根据定义) 不是实例的一部分。我的客户端进程 (任何试图连接到数据库的程序)将通过一些网络管道 (如TCP/IP套接字) 与这个专用服务器直接通信。 这个服务器进程将接收我的SQL并为我执行它。必要时,它会读取数据文件,并在数据库的缓存中查找我的数据。它将执行我的更新语句。它将运行我的PL/SQL代码。它的唯一目标是响应我提交给它的SOL调用。
3、Oracle Shared ServerOracle共享服务器
- 这里要注意一个SGA中只有一个Request Queue请求队列,但是可能会有多个Response Queue响应队列

- 如果是在一台机器上,Listener只需要返回端口号即可,如果不是在一台机器上,Listener还需要返回ip地址
4、Benefits of Shared Server 共享服务器的优点
- 减少针对实例的进程数
- 增加可能的用户数
- 实现负载平衡
- 减少了空闲服务器进程的数量
- 减少内存使用和系统开销
5、Processing a Request 处理请求

6、Configuring Shared Server 配置共享服务器
基础介绍
- 所需的初始化参数
- DISPATCHERSL
- SHARED_SERVERS
- 可选初始化参数
- MAX_DISPATCHERS
- MAX_SHARED_SERVERS
- CIRCUITS 电路
- SHARED_SERVER_SESSIONS
参数介绍
- DISPATCHERS
指定为给定协议初始启动的调度程序数
sql
DISPATCHERS = "(PROTOCOL=TCP)(DTSPATCHERS=2)\(PROTOCOL=IPC)(DISPATCHERS=1)"

- SHARED_SERVERS
指定启动实例时创建的服务器进程数
sql
SHARED_SERVERS = 6

- MAX_SHARED_SERVERS
- 指定可启动的最大共享服务器数
- 允许根据请求队列的长度动态分配共享服务器
sql
MAX_SHARED_SERVERS = 10

- CIRCUITS 电路
- 指定可用于入站和出站网络会话的虚电路总数
- 影响SGA总规模
sql
CIRCUITS = 100
- SHARED_SERVER_SESSIONS
- 指定Oracle共享服务器用户会话的总数
- 设置此参数使您可以为专用服务器保留用户会话
sql
SHARED_SERVER_SESSIONS = 100
7、Dedicated vs Shared 专用与共享
- 如果配置了共享服务器,并且客户机连接请求在没有注册调度程序的情况下到达则由专用服务器进程处理该请求。如果希望特定客户端始终使用分派器,请配置在CONNECT描述符的CONNECT_DATA部分(server=Shared)。举个例子
bash
sales=
(DESCRIPTION=
(ADDRESS=(PROTCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT DATA=
(SERVICE NAME=orcl)
(SERVER=shared)))
-
如果调度程序不可用,则拒绝客户端连接请求。
-
如果数据库配置为共享服务器,而某个特定的客户端需要专用服务器,则可以通过以下方式之一配置客户端使用专用服务器:
-
您可以使用CONNECT_DATA部分中包含 (server=专用)的连接描述符来配置网络服务名。举个例子:
bash
sales=
(DESCRIPTION=
(ADDRESS=(PROTCOL=tcp)(HOST=sales-server)(PORT=1521))
(CONNECT DATA=
(SERVICE NAME=orcl)
(SERVER=dedicated)))
二、基础操作
1、设置共享服务器模式
首先以dba用户登录数据库
sql
sqlplus / as sysdba
然后启动数据库
sql
startup

查看相关参数
sql
show parameter disp;

sql
show parameter share;

修改相关参数
- DISPATCHERSL
- SHARED_SERVERS
这两个参数是我们必须要进行设置的
sql
alter system set dispatchers='(protocol=tcp)(dispatchers=3)';

进行查看
sql
show parameter disp;

我们没有设置最大的上限,目前设置的可以有3个dispatchers,我们在查看一下进程
bash
ps -ef | grep oracle

可以看到d001和d002,上边有个d000是之前存在的
现在我们修改SHARED_SERVERS
bash
alter system set SHARED_SERVERS=4;

再次查看进程
bash
ps -ef | grep oracle

可以看到s001、s002和s003,上边有个s000是之前存在的
2、Verifying Setup 验证注册状态
当实例启动时,验证调度程序是否已向侦听器注册:
bash
lsnrctl services
通过建立一个连接来验证是否使用共享服务器进行了连接,然后查询V$CIRCUIT视图以显示每个共享服务器连接的一个条目。
完结