Shared Server

本文详细介绍如何在Oracle数据库中配置共享服务器模式,包括启用和禁用共享服务器、配置Dispatcher和连接池特性、以及如何进行性能调优。此外,还介绍了如何使用Oracle提供的动态性能视图来监控和调整共享服务器的运行状况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

启用SHARED SERVERS和关闭

只需要把SHARED_SERVERS设置为大于1的值,系统即转为SHARED SERVER。关闭SHARED SERVERS只需要把该参数设置为0。


SQL> alter system set shared_servers=2; #更改已成功

系统已更改。

SQL> select name,status from v$shared_server; #结果显示有S000和S001两个SHARED SERVERS PROCESS正运行

NAME STATUS
---- ----------------
S000 WAIT(COMMON)
S001 WAIT(COMMON)

SQL> alter system set dispatchers="(protocol=tcp)(dispatcher=2)";

系统已更改。

SQL> select name,status,accept as accept from v$dispatcher;

NAME STATUS ACC
---- ---------------- ---
D000 WAIT YES #STATUS为WAIT表示空闲,正等待任务,ACC为YES表示可以接受新建连接
D001 WAIT YES

SQL> alter system shutdown immediate 'D000';

系统已更改。

SQL> select name,status,accept as accept from v$dispatcher;

NAME STATUS ACC
---- ---------------- ---
D000 REFUSE NO #状态显示拒绝任何新建连接
D001 WAIT YES

SQL> select name,status,accept as accept from v$dispatcher;

NAME STATUS ACC
---- ---------------- ---
D001 WAIT YES #过一会再试D000已经关闭

SQL>

SQL> alter system set shared_Servers=0; #关闭SHARED SERVER

系统已更改。

SQL> select name,status,accept as accept from v$dispatcher;

NAME STATUS ACC
---- ---------------- ---
D001 WAIT NO #所有DISPATCHER均拒绝任何新建连接

SQL> select name,status from v$shared_server; #没有立即生效,ORACLE手册上说是因为系统会等所有有SHARED SERVER连接断开再停止SHARED SERVER PROCESS。

NAME STATUS
---- ----------------
S000 WAIT(COMMON)
S001 WAIT(COMMON)

SQL> select name,status from v$shared_server;

NAME STATUS
---- ----------------
S000 QUIT #过一会再试,变成退出的状态
S001 QUIT

SQL> select name,status from v$shared_server;

NAME STATUS
---- ----------------
S000 TERMINATED #过一会再试变成终止的状态
S001 TERMINATED

SQL> select name,status from v$shared_server;

未选定行 #已经没有SHARED SERVER PROCESS了

SQL>


在共享服务器中请求一个专用连接

如果在共享服务器中需要请求一个专用连接,如果正使用TNSNAME命名方法,则只需要添加以下参数即可。SERVER=DEDICATED
ORCL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))
)
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

修改DISPATCHER

启用SHARED SERVERS后DISPATCHER默认为dispatchers="(PROTOCOL=tcp)"
例:这是一个典型例子
Dispatchers="(PROT=TCP)(DISP=2)"
例:强制使用Dispatcher的地址
Dispatchers="(Address=(Protocol=tcp)(host=144.25.16.201))(dispatchers=2)"
例:强制使用Dispatcher的端口
Dispatchers="(Address=(Protocol=tcp)(Port=5000))"
Dispatchers="(Address=(Protocol=tcp)(Port=5001))"

配置连接池特性

该特性通过预建立一个连接池,客户需要连接时从连接池中取,当连接空闲时自动断开,并放回到连接池,以备下个连接请求使用。该特性赋予了Shared Server处理较大数量连接的能力。如果有大量客户并且大量是空闲连接,则适用该特性,例如WEB。
配置示例如下:
SQL> alter system set dispatchers="(protocol=tcp)(dispatcher=2)(pool=on)(tick=1)
(connections=500)(sessions=1000)";

系统已更改。

SQL>
意思如下:
(DISPATCHER=1) -- 配置一个Dispatcher
(PROTOCOL=TCP) -- 接受协议是TCP
(POOL=ON) -- 为它打开连接池特性
(TICK=1) -- 当经过10分钟无通信后,连接会被视为空闲,如果TICK=2,经过20分钟后连接会被视为空闲
(CONNECTIONS=500) -- 该DISPATCHER最大可接受500个连接
(SESSIONS=1000) -- 该DISPATCHER最大可接受1000个会话

关闭指定DISPATCHER

首先查看DISPATCHER的名称
SELECT NAME, NETWORK FROM V$DISPATCHER;
然后根据名称关闭
ALTER SYSTEM SHUTDOWN IMMEDIATE 'D002';

使用共享服务器的动态性能视图

要知道动态性能视图的完整解释,请下载完整ORACLE文档库,然后定位到以下位置
打开文档库首页->打开BOOK标签页->定位到书名为 "Reference" ->打开HTML版 ->定位到"Part III Dynamic Performance Views“中的Dynamic performance (V$) Views->然后找到需要的视图

使用V$DISPATCHER


SQL> select name,status,messages,idle,busy,bytes,breaks from v$dispatcher;

NAME STATUS MESSAGES IDLE BUSY BYTES BREAKS
---- ---------------- ---------- ---------- ---------- ---------- ----------
D000 WAIT 8685 217560 705 1501540 0

SQL>

以上查访结果显示:
  • 现在有一个Dispatcher,名称为:D000
  • STATUS为WAIT,表示它正处于空闲的状态
  • MESSAGES表示它已经处理完8685条信息
  • IDLE表示自启动以来空闲了271560,
  • BUSY表示繁忙了705
  • BYTES表示该Dispatcher已处理的所有信息的总字节数
  • BREAKS表示它已经处理过的中断(例如从控制台发到+)

使用v$dispatcher_config

该视图含有DISPATCHER的配置信息。包括:监听协议,监听地址,接受的最大连接数和会话数及服务名称信息。
SQL> select conf_indx,dispatchers,connections,sessions "SESS", service from v$dispatcher_config;

CONF_INDX  DISPATCHERS   CONNECTIONS SESS  SERVICE
--------------------------------------------------------------------------------

0         2       1002       1002  orcl,orcl,orcl_XPT


SQL>
结果显示:

1. 系统配置了两个DISPATCHER
2. 可接受的连接数和会话数都是1002
3. 可接受以下服务的请求orcl,orcl,orcl_XPT

使用V$DISPATCHER_RATE

显示DISPATCHER的统计数据,例如已处理的平均字节数,曾经出站与入站的最大连接数及每个客户连接的平均处理字节。其中以CUR开头为当前统计数据,以AVG或MAX为平均或最大统计数据
SQL> select name,cur_event_rate,cur_msg_rate,cur_svr_byte_rate from v$dispatcher
_rate;

NAME CUR_EVENT_RATE CUR_MSG_RATE CUR_SVR_BYTE_RATE
---- -------------- ------------ -----------------
D000 77 0 0
D001 104 0 0

SQL>
结果显示:

1. 有两个调试程序
2. D000当前大约每分钟处理77个事件
3. D000当前信息量和字节数都为0

使用V$SHARED_SERVER

下例可看到服务器已经处理了多少个请求和信息,并可看到信息的总大小,并可看到自启动以来总繁忙的时间

NAME PADDR STATUS MESSAGES BYTES BREAKS CIRCUIT IDLE BUSY REQUESTS
S000 1EE4CBEC WAIT(COMMON) 146 20872 0 00 287354 966 37

shared server性能调优

调节共享服务器选项应该考虑到的地方
  1. 确保有足够的Dispatcher,以便客户没有正在等候Dispatcher响应它们的请求
  2. 确保有足够的Shared Server Process,以便没有请求正在等候得到处理
  3. 配置Large Pool SGA,以便有足够大的地方存储UGA。

配置Large Pool

  • 在init.ora文件中参数LARGE_POOL_SIZE可以被配置成最小300K和至少2G的最大值,最大值跟操作系统相关
    • 例:LARGE_POOL_SIZE = 50M
  • 也可以使用Slter system修改
    • 例:ALTER SYSTEM SET LARGE_POOL_SIZE=100M
  • 当使用默认值时,共享服务器中的每个会话使Large pool增加250KB,并分配给该会话。
  • 当Large Pool未被配置时,UGA会放在Shared Pool中,这会影响Shared Pool性能,所以应该配置一个Large Pool。
  • 使用V$SGASTAT可检查LARGE POOL正使用的空间。FREE MEMORY显示可供使用的空间,SESSION HEAP显示已使用的空间
SQL> select *from v$sgastat where pool='large pool';

POOL NAME BYTES
------------ -------------------------- ----------
large pool PX msg pool 206208
large pool free memory 7851120
large pool session heap 331280

SQL>
结果显示共有空闲LARGE POOL内存7851120字节,会话头使用了331280字节

确定Large Pool大小

一般来说,每个连接需要1MB到3MB之间的内存
查询V$SESSTAT视图可得到所有连接中最大曾经分配的最大内存。把乘以预计的最大连接数即可得出Large Pool的大小.
SQL> select sum(value) "max mts memory allocated" from v$sesstat ss, v$statname
st where name = 'session uga memory max' and ss.statistic# = st.statistic#;

max mts memory allocated
------------------------
6167676

SQL>
结果显示单个连接曾最大分配内存为6167676字节

确定是否有足够的Dispatcher

查询V$dispatcher可监视各Dispatcher进程,从而得知各Dispatcher有多繁忙。如果Dispatcher繁忙时间百分比超过50%,则需要考虑启动更多的调度程序。

SQL> select name, (busy/(busy + idle)) "dispatcher busy rate" from v$dispatcher
;

NAME dispatcher busy rate
---- --------------------
D000 .000121704
D001 .000042597
D002 .004935402

SQL>
以上例显示D000繁忙的比率大约只是0.001%,显然远未达到50%,所以不需要增加DISPATCHER

测量用户等候Dispatcher程序多长时间

通过组合查询V$queue和V$dispatcher可得出结果
SQL> Select decode(sum(totalq), 0, 'no responses', sum(wait)/sum(totalq)) "avera
ge wait time" from V$QUEUE Q, V$DISPATCHER D WHERE Q.TYPE='DISPATCHER' AND Q.PAD
DR=D.PADDR;

average wait time
----------------------------------------
0

SQL>
结果显示用户不需要等待,所以不需要增加DISPATCHER。

确定是否有足够的共享服务器

下例显示请求队列中的平均等时间比0.3秒略多一点
SQL> Select decode(totalq,0,'No Requests') "Wait Time", Wait/totalq || ' hundred
ths of seconds' "Average Wait time per request" from V$QUEUE where type='COMMON'
;

Wait Time Average Wait time per request
----------- --------------------------------------------------------------
.324324324324324324324324324324324324324 hundredths of seconds[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/779728/viewspace-1005708/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/779728/viewspace-1005708/

<think>首先,用户的问题是:“我想配置RADIUS服务器认证时设置共享密钥 请问如何在RADIUS服务器上配置认证和共享密钥”。这涉及到RADIUS服务器的配置,特别是设置共享密钥。 系统级指令: - 所有行内数学表达式必须使用$...$格式,但这里可能没有数学表达式,所以不需要。 - 独立公式用$$...$$,但问题不涉及数学。 - LaTeX语法正确:确保在需要时使用。 - 使用中文回答:整个回答必须是中文。 - 生成相关问题:在回答末尾添加相关问题。 - 引用段落末尾添加引用标识:如[^1]。 用户可见层: - 结构清晰,逐步解决问题。 - 保证回答真实可靠。 参考引用: - 引用[1]: 关于共享密钥的作用。 - 引用[2]: RADIUS服务器的配置和管理。 - 引用[3]: 在Windows服务器上搭建RADIUS,包括认证、授权、计费。 用户的问题核心是配置共享密钥。共享密钥用于RADIUS服务器和客户端(如NAS设备)之间的安全通信,确保消息的真实性和完整性。 关键步骤: 1. **理解共享密钥的作用**:共享密钥是预共享的秘密,用于加密和验证RADIUS消息。 2. **配置RADIUS服务器**: - 选择RADIUS服务器软件(如Windows Server中的NPS,或开源如FreeRADIUS)。 - 在服务器上设置共享密钥。 - 配置客户端(NAS设备)使用相同的共享密钥。 3. **具体操作**: - 对于Windows Server:使用Network Policy Server (NPS)。 - 对于FreeRADIUS:编辑配置文件如clients.conf。 基于引用: - 引用[1]强调共享密钥用于身份认证。 - 引用[2]提到访问管理界面。 - 引用[3]提供RADIUS核心功能和搭建方法。 回答结构: 1. **介绍共享密钥的重要性**:简要解释为什么需要共享密钥。 2. **步骤指南**:逐步说明如何在常见RADIUS服务器上配置。 - 以Windows Server为例。 - 简要提及其他方案。 3. **注意事项**:如密钥长度、安全性。 4. **生成相关问题**:在末尾。 确保回答真实可靠:基于标准RADIUS协议知识。 最终回答用中文。</think>### 如何在RADIUS服务器上配置认证和共享密钥 配置RADIUS服务器的认证和共享密钥是确保网络安全的关键步骤。共享密钥(Shared Secret)用于在RADIUS服务器和客户端(如网络接入服务器NAS)之间建立安全通信,防止消息篡改和伪造[^1]。以下是基于常见RADIUS服务器软件的详细配置步骤。我将以Windows Server(使用NPS角色)和开源FreeRADIUS为例进行说明,确保过程清晰可靠。 #### 1. **理解共享密钥的作用** - **核心功能**:共享密钥用于加密RADIUS消息(如Access-Request和Access-Accept),确保数据完整性和身份认证[^1]。如果密钥不匹配,认证会失败。 - **安全建议**: - 使用强密钥(至少16字符,包含字母、数字和符号)。 - 定期轮换密钥以增强安全性。 - 确保服务器和客户端使用相同的密钥。 #### 2. **在Windows Server上配置RADIUS认证和共享密钥** Windows Server通过Network Policy Server (NPS) 提供RADIUS服务。以下是逐步操作: - **步骤1: 安装NPS角色** 1. 打开“服务器管理器”。 2. 选择“添加角色和功能”。 3. 在“服务器角色”中勾选“Network Policy and Access Services”,然后安装“Network Policy Server”子角色[^2]。 4. 完成安装后,从“工具”菜单打开“NPS”控制台。 - **步骤2: 配置共享密钥** 1. 在NPS控制台中,右键点击“RADIUS Clients”,选择“新建”。 2. 输入客户端信息: - “友好名称”:例如,“NAS-Device”。 - “地址(IP或DNS)”:输入NAS设备的IP地址。 - **关键步骤**:在“共享机密”区域,输入共享密钥(如`MySecureKey123!`),并确认密钥。确保勾选“共享机密已加密”选项[^2]。 - 点击“确定”保存。 3. 验证配置:在“RADIUS Clients”列表中检查客户端条目是否显示正确密钥。 - **步骤3: 设置认证策略** 1. 在NPS控制台中,转到“策略” > “网络策略”。 2. 右键点击“新建”,创建新策略: - 命名策略(如“RADIUS-Auth-Policy”)。 - 在“条件”中添加“NAS IPv4 Address”或“用户组”,指定认证范围。 - 在“约束”中启用认证方法(如EAP或PAP)。 - 在“设置”中选择“身份验证”,配置与Active Directory或LDAP集成[^3]。 3. 应用策略后,测试认证:使用测试用户设备连接NAS,验证RADIUS服务器是否返回Access-Accept消息。 - **注意事项**: - 如果使用Active Directory,确保用户账户已启用网络访问权限。 - 日志查看:在“事件查看器”中检查NPS日志,排查错误。 #### 3. **在FreeRADIUS上配置认证和共享密钥** FreeRADIUS是开源方案,适用于Linux系统。以下是基本步骤(以Ubuntu为例): - **步骤1: 安装FreeRADIUS** ```bash sudo apt update sudo apt install freeradius freeradius-utils ``` - **步骤2: 配置共享密钥** 1. 编辑客户端配置文件: ```bash sudo nano /etc/freeradius/3.0/clients.conf ``` 2. 添加客户端条目: ```conf client nas-device { ipaddr = NAS_IP_ADDRESS # 替换为NAS设备的IP secret = MySecureKey123! # 设置共享密钥 } ``` 3. 保存文件后,重启服务: ```bash sudo systemctl restart freeradius ``` - **步骤3: 设置认证集成** 1. 编辑认证文件: ```bash sudo nano /etc/freeradius/3.0/sites-available/default ``` 2. 在`authorize`部分启用认证模块(如LDAP或PAM): ```conf authorize { ldap # 如果使用LDAP ... } ``` 3. 配置LDAP(可选):编辑`/etc/freeradius/3.0/mods-available/ldap`,设置服务器地址和凭证。 - **测试配置**: - 使用`radtest`工具模拟认证: ```bash radtest username password NAS_IP 0 shared_secret ``` - 如果返回“Access-Accept”,表示配置成功。 #### 4. **通用注意事项** - **兼容性**:共享密钥必须在所有RADIUS客户端(如路由器或交换机)上配置相同值。否则,认证失败。 - **安全最佳实践**: - 避免使用默认密钥(如“radius”)。 - 在传输中使用IPSec或TLS加密补充共享密钥[^1]。 - 定期审计密钥使用。 - **其他方案**: - **付费方案**:如Cisco ISE或Microsoft Azure NPS,提供GUI界面简化配置。 - **云RADIUS**:服务如JumpCloud,支持自动密钥管理。 通过以上步骤,您可以成功配置RADIUS认证和共享密钥。如果遇到问题,检查防火墙设置(RADIUS使用UDP端口1812/1813)和客户端日志[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值