oracle的shared server模式和dedicated server模式
1、shared server和dedicated server连接方式比较
shared server 连接方式
dedicated server 连接方式
2、shared server process
在服务器上进行ps -ef| grep shared从而得到所有的oracle后台进程如下:
oracle 4476 1 0 19:18 ? 00:00:00 ora_pmon_shared oracle 4478 1 0 19:18 ? 00:00:00 ora_psp0_shared oracle 4480 1 0 19:18 ? 00:00:00 ora_mman_shared oracle 4482 1 0 19:18 ? 00:00:01 ora_dbw0_shared oracle 4484 1 0 19:18 ? 00:00:01 ora_lgwr_shared oracle 4486 1 0 19:18 ? 00:00:03 ora_ckpt_shared oracle 4488 1 0 19:18 ? 00:00:02 ora_smon_shared oracle 4490 1 0 19:18 ? 00:00:00 ora_reco_shared oracle 4492 1 0 19:18 ? 00:00:02 ora_cjq0_shared oracle 4494 1 0 19:18 ? 00:00:04 ora_mmon_shared oracle 4496 1 0 19:18 ? 00:00:00 ora_mmnl_shared oracle 4498 1 0 19:18 ? 00:00:00 ora_d000_shared oracle 4500 1 0 19:18 ? 00:00:00 ora_s000_shared oracle 4520 1 0 19:18 ? 00:00:00 ora_qmnc_shared oracle 4535 1 0 19:18 ? 00:00:00 ora_q002_shared oracle 4537 1 0 19:18 ? 00:00:00 ora_q003_shared oracle 15255 1 0 23:36 ? 00:00:00 ora_j000_shared
在客户端连接oracle数据库时,不会分配新的进程
客户端程序先连接到监听,然后监听程序通过调度器d000将任务放倒request Queue中,然后由空闲的共享进程s000来进行处理,处理完成之后把结果放倒response Queue中,然后调度器进程d000将结果返回给客户端程序
在服务器端用sqlplus连接的进程
oracle 16046 15677 0 May19 ? 00:00:01 oracleshared (DESCRIPTION=(LOCAL=YES)(ADDRESS= (PROTOCOL=beq)))
当在远程指定用DEDICATED方式连接时,也会分配一个单独的用户进程进行连接,如下
客户端的tnsnames.ora文件中,在connect_data中添加一行,(SERVER = DEDICATED),从而指定用DEDICATED方式进行连接,连接的进程如下
oracle 16584 1 0 00:08 ? 00:00:00 oracleshared (LOCAL=NO)
2、dedicated server process
常见进程如下:
oracle 17596 1 0 00:37 ? 00:00:00 ora_pmon_dedicated oracle 17598 1 0 00:37 ? 00:00:00 ora_psp0_dedicated oracle 17600 1 0 00:37 ? 00:00:00 ora_mman_dedicated oracle 17602 1 0 00:37 ? 00:00:00 ora_dbw0_dedicated oracle 17604 1 0 00:37 ? 00:00:00 ora_lgwr_dedicated oracle 17606 1 0 00:37 ? 00:00:00 ora_ckpt_dedicated oracle 17608 1 0 00:37 ? 00:00:00 ora_smon_dedicated oracle 17610 1 0 00:37 ? 00:00:00 ora_reco_dedicated oracle 17612 1 0 00:37 ? 00:00:00 ora_cjq0_dedicated oracle 17614 1 0 00:37 ? 00:00:00 ora_mmon_dedicated oracle 17616 1 0 00:37 ? 00:00:00 ora_mmnl_dedicated oracle 17618 1 0 00:37 ? 00:00:00 ora_d000_dedicated oracle 17620 1 0 00:37 ? 00:00:00 ora_s000_dedicated oracle 17639 1 0 00:38 ? 00:00:00 ora_qmnc_dedicated oracle 17661 1 0 00:38 ? 00:00:00 ora_q001_dedicated oracle 17663 1 0 00:38 ? 00:00:00 ora_q002_dedicated oracle 18086 1 0 00:50 ? 00:00:00 ora_j000_dedicated客户端连接进去之后,服务器会给你分配一个新的进程,在不指定或者指定为dedicated连接方式之后,进程如下:
oracle 18194 1 1 00:52 ? 00:00:00 oraclededicated (LOCAL=NO)
服务器登陆连接进程如下:
oracle 18215 18214 1 00:53 ? 00:00:00 oraclededicated (DESCRIPTION=(LOCAL=YES)(ADDRESS=PROTOCOL=beq)))
当指定为shared方式连接dedicated server时,会出现如下错误:
C:\Users\Administrator>sqlplus system/orcl@dedicated SQL*Plus: Release 11.2.0.1.0 Production on 星期一 5月 20 15:56:47 2013 Copyright (c) 1982, 2010, Oracle. All rights reserved. ERROR: ORA-12520: TNS: 监听程序无法为请求的服务器类型找到可用的处理程序 请输入用户名:说明,如果服务连接方式为dedicated server,那么就不能使用shared server的连接方式来进行连接,但是如果是开启了shared server方式,那么还是可以使用dedicated server方式来进行连接的
小结论如下:
1. 如果是dedicated server,则客户端只能创建dedicated server connection
2. 如果是shared server,则客户端能创建dedicated server connection和shared server connection,只要在service name中指定server=dedicated or server=shared.
(1)A dedicated server process, which services only one userprocess (2)A shared server process, which can service multiple userprocesses
SQL> show parameter dispatcher NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ dispatchers string (PROTOCOL=TCP) max_dispatchers integer SQL> alter system set dispatchers = '' scope=both; System altered. SQL> show parameter shared_server NAME TYPE ------------------------------------ ---------------------- VALUE ------------------------------ max_shared_servers integer shared_server_sessions integer shared_servers integer 1 SQL> alter system set shared_servers = 0 scope=both; System altered
然后再查看数据库的进程的时候,就不会出现D000进程和S000进程了
为何创建的是专有模式的数据库,数据库却自动配置了dispatchers参数,暂时无解!!!!
for linux and python
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述