我们的文章会在微信公众号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应用(短连接频繁释放)

长连接或复杂查询

推荐方案
  1. 一般业务直接用专用服务器,简单稳定。
  2. 超高并发OLTP(如电商)可以试试共享服务器,但必须确保事务够短!
  3. Web应用(如Java/PHP)可以用DRCP,减少连接开销。

记住:共享服务器不是万能的,用错了会让数据库卡成PPT! 🚀

------------------作者介绍-----------------------

姓名:黄廷忠 现就职:Oracle中国高级服务团队 曾就职:OceanBase、云和恩墨、东方龙马等 电话、微信、QQ:18081072613

个人博客: (http://www.htz.pw)

CSDN地址: (https://blog.csdn.net/wwwhtzpw)

博客园地址: (https://www.cnblogs.com/www-htz-pw)

读书笔记:Oracle数据库连接模式:专用、共享和DRCP,到底怎么选?_Server