我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。
本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。
Oracle数据库连接模式:专用、共享和DRCP,到底怎么选?
在Oracle数据库里,连接数据库的方式主要有三种:专用服务器(Dedicated Server)、共享服务器(Shared Server)和DRCP(Database Resident Connection Pooling)。它们各有优缺点,适用于不同的业务场景。今天我们就来聊聊,它们到底有什么区别,以及什么时候该用哪种模式。
1. 专用服务器(Dedicated Server)
特点:一个连接对应一个进程
- 每次客户端连接数据库,Oracle都会创建一个专门的服务器进程来处理它的请求。
- 这是最常用、最简单的连接方式,默认情况下Oracle就用这个模式。
适用场景
✅ 适合大多数业务,特别是那些事务较长的应用(比如数据分析、报表查询)。
✅ 不会因为某个长事务阻塞其他用户,因为每个连接都有自己的专属进程。
✅ 配置简单,几乎不需要额外设置。
缺点
❌ 如果同时有成千上万的连接,会占用大量内存和CPU资源(每个连接都要一个独立进程)。
❌ 某些特殊操作(如数据库启动/关闭)必须用专用服务器模式。
一句话总结:默认就用它,除非你的系统有特殊需求(比如连接数太多)。
2. 共享服务器(Shared Server)
特点:多个连接共享少量进程
- 多个客户端连接共享少量的服务器进程(比如1000个用户共享50个进程)。
- 类似“银行柜台”,所有人排队,谁有空谁处理。
适用场景
✅ 适合短事务、高并发的OLTP系统(比如电商下单、支付)。
✅ 减少操作系统进程数量,适合连接数超多但活跃用户少的场景(比如5000用户,但只有50个活跃)。
✅ 节省内存(因为减少了PGA的数量)。
缺点
❌ 长事务会卡死系统!如果一个查询跑1分钟,其他用户就得排队等。
❌ 可能出现“假死锁”:某个会话占着共享进程不释放,导致其他会话无法提交。
❌ 不适合数据仓库(长查询会拖垮整个系统)。
什么时候必须用共享服务器?
- 需要使用Oracle Net连接池。
- 需要使用数据库链接集中(Database Link Concentration)。
一句话总结:只适合短平快的OLTP系统,长事务千万别用!
3. DRCP(数据库驻留连接池)
特点:折中方案,比共享服务器更灵活
- 类似于共享服务器,但每个连接在占用期间是独占的,用完才放回池里。
- 没有共享服务器的“假死锁”问题。
适用场景
✅ 适合短连接、频繁断开的应用(比如Web应用,每次请求完就释放连接)。
✅ 比共享服务器更稳定,不会因为长事务卡住整个系统。
缺点
❌ 不能像共享服务器那样多线程复用,每个连接在活动期间独占进程。
一句话总结:适合Web应用,比共享服务器更安全,但不如专用服务器灵活。
最终结论:怎么选?
模式 | 适用场景 | 不适合场景 |
专用服务器 | 默认选择,适合大多数业务 | 连接数太多时资源消耗大 |
共享服务器 | 高并发短事务(OLTP) | 长事务(数据仓库) |
DRCP | Web应用(短连接频繁释放) | 长连接或复杂查询 |
推荐方案
- 一般业务直接用专用服务器,简单稳定。
- 超高并发OLTP(如电商)可以试试共享服务器,但必须确保事务够短!
- Web应用(如Java/PHP)可以用DRCP,减少连接开销。
记住:共享服务器不是万能的,用错了会让数据库卡成PPT! 🚀
------------------作者介绍-----------------------
姓名:黄廷忠 现就职:Oracle中国高级服务团队 曾就职:OceanBase、云和恩墨、东方龙马等 电话、微信、QQ:18081072613
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)