读书笔记: 一文读懂Oracle多租户数据库:集装箱与可插拔的奇妙设计
我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢!
由于博客中有大量代码,通过页面浏览效果更佳。
本文为个人学习《Expert Oracle Database Architecture Techniques and Solutions for High Performance and Productivity(第四版本》一书过程中的笔记与理解分享,仅用于学习与交流,部分内容参考原书观点并结合>实际经验进行整理。若涉及版权问题,请联系删除或沟通处理。也请大家支持购买原版书籍。
一文读懂Oracle多租户数据库:集装箱与可插拔的奇妙设计
什么是多租户容器数据库?
想象一下,Oracle数据库就像一个大型集装箱港口。从Oracle 12c开始,这个港口引入了一种全新的管理模式——多租户架构。这个架构中有两种关键角色:
- 容器数据库(CDB):相当于港口的基础设施,包含码头、吊机、管理系统等核心设备
- 可插拔数据库(PDB):就像一个个标准集装箱,里面装着不同客户的货物
核心概念解析
容器数据库(CDB)是整套系统的"地基",它包含:
- Oracle运行必需的核心文件(控制文件、日志文件等)
- Oracle自身的元数据和代码
- 不包含任何具体的业务数据
可插拔数据库(PDB)则是"业务单元",特点包括:
- 只包含数据文件,没有独立的日志、控制文件
- 装载着具体的业务数据和应用程序
- 必须"插"到CDB上才能工作
- 可以随时"拔出"并迁移到其他CDB
实际运行场景
假设我们有一个CDB和两个PDB:
- CDB:名为"主港口"
- PDB1:存放电商系统数据
- PDB2:存放财务系统数据
当电商用户连接数据库时:
- 用户通过"电商PDB"的服务名连接
- 系统自动将其路由到正确的PDB
- 用户只能看到电商数据,完全不知道财务数据的存在
技术优势
-
资源节省:
- 传统方式:50个独立数据库需要约5000个进程
- 多租户方式:只需约100个进程服务所有PDB
- 内存共享:所有PDB共享同一个SGA内存区
-
管理简便:
- 配置一次RAC,所有PDB自动获得高可用能力
- 备份一次CDB,自动包含所有PDB
- 升级维护只需操作CDB,影响所有PDB
-
隔离安全:
- 各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)
浙公网安备 33010602011771号