读书笔记: 一文读懂Oracle多租户数据库:集装箱与可插拔的奇妙设计

我们的文章会在微信公众号IT民工的龙马人生博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。

本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。

一文读懂Oracle多租户数据库:集装箱与可插拔的奇妙设计

什么是多租户容器数据库?

想象一下,Oracle数据库就像一个大型集装箱港口。从Oracle 12c开始,这个港口引入了一种全新的管理模式——多租户架构。这个架构中有两种关键角色:

  1. 容器数据库(CDB):相当于港口的基础设施,包含码头、吊机、管理系统等核心设备
  2. 可插拔数据库(PDB):就像一个个标准集装箱,里面装着不同客户的货物

核心概念解析

容器数据库(CDB)是整套系统的"地基",它包含:

  • Oracle运行必需的核心文件(控制文件、日志文件等)
  • Oracle自身的元数据和代码
  • 不包含任何具体的业务数据

可插拔数据库(PDB)则是"业务单元",特点包括:

  • 只包含数据文件,没有独立的日志、控制文件
  • 装载着具体的业务数据和应用程序
  • 必须"插"到CDB上才能工作
  • 可以随时"拔出"并迁移到其他CDB

实际运行场景

假设我们有一个CDB和两个PDB:

  • CDB:名为"主港口"
  • PDB1:存放电商系统数据
  • PDB2:存放财务系统数据

当电商用户连接数据库时:

  1. 用户通过"电商PDB"的服务名连接
  2. 系统自动将其路由到正确的PDB
  3. 用户只能看到电商数据,完全不知道财务数据的存在

技术优势

  1. 资源节省

    • 传统方式:50个独立数据库需要约5000个进程
    • 多租户方式:只需约100个进程服务所有PDB
    • 内存共享:所有PDB共享同一个SGA内存区
  2. 管理简便

    • 配置一次RAC,所有PDB自动获得高可用能力
    • 备份一次CDB,自动包含所有PDB
    • 升级维护只需操作CDB,影响所有PDB
  3. 隔离安全

    • 各PDB完全隔离,互不可见
    • 应用之间不会产生命名冲突
    • 可以按需分配资源

对开发和运维的影响

对开发人员

  • 连接方式与普通数据库完全一致
  • 开发体验没有任何变化
  • 无需关心底层是多租户架构

对DBA

  • 管理对象从"数据库"变为"容器+PDB"
  • 可以批量操作多个PDB
  • 新引入PDB克隆、迁移等高级功能

版本与授权

  • Oracle 19c企业版默认支持创建3个PDB
  • 购买多租户选件后可支持多达4096个PDB
  • 标准版仍保持单租户模式

总结

Oracle多租户架构就像数据库世界的"集装箱革命":

  • CDB是港口基础设施
  • PDB是标准化集装箱
  • 共享基础资源,降低运营成本
  • 保持业务隔离,确保安全
  • 简化管理,提高效率

这种设计特别适合云环境和企业级应用,让数据库资源能够更灵活、高效地服务于多个业务系统。

------------------作者介绍-----------------------
姓名:黄廷忠
现就职:Oracle中国高级服务团队
曾就职:OceanBase、云和恩墨、东方龙马等
电话、微信、QQ:18081072613
个人博客: (http://www.htz.pw)
CSDN地址: (https://blog.csdn.net/wwwhtzpw)
博客园地址: (https://www.cnblogs.com/www-htz-pw)

posted @ 2025-07-19 22:03  认真就输  阅读(16)  评论(0)    收藏  举报