Oracle 多租户架构简介

目录

  • [零. 简介](#零. 简介)
  • [一. CDB(Container Database,容器数据库)](#一. CDB(Container Database,容器数据库))
  • [二. PDB(Pluggable Database,可插拔数据库)](#二. PDB(Pluggable Database,可插拔数据库))
  • [三. CDB 与 PDB 的比较](#三. CDB 与 PDB 的比较)
  • [四. 用户的种类](#四. 用户的种类)
  • [五. XE 与 XEPDB1](#五. XE 与 XEPDB1)

零. 简介

⏹Oracle 多租户架构 (Multitenant Architecture)是 Oracle 数据库的一种架构,旨在提供对多个数据库实例的高效管理、资源共享和隔离。它在 Oracle 12c 引入,并成为 Oracle 数据库的重要特性之一。允许在一个数据库实例中运行多个逻辑数据库。

多租户架构的核心概念是:

  • 容器数据库(CDB)-> Container Database
  • 可插拔数据库(PDB)-> Pluggable Database

应用场景

  • 云数据库服务提供商:云服务提供商可以在同一个 CDB 中创建多个 PDB,为不同的客户提供独立的数据库环境,每个 PDB 作为一个租户的数据库。
  • 大型企业:一个大型企业可能有多个部门或应用,每个部门或应用可以在不同的 PDB 中运行,实现隔离和独立管理。
  • 开发和测试环境:开发和测试人员可以通过克隆现有的 PDB 快速创建新的测试环境,而不需要创建一个全新的数据库实例。

一. CDB(Container Database,容器数据库)

CDB 是一个包含多个 PDB 的容器,是 Oracle 数据库的基础架构。它负责共享资源(如内存、进程)并管理 PDB 的整体运行。

⏹根容器(Root ContainerCDB$ROOT):

  • 存放 CDB 的元数据和公共组件(如数据字典、公共用户)。
  • PDB 必须依赖 CDB$ROOT 提供基础服务。

⏹种子数据库(Seed Database,PDB$SEED):

  • 一个只读的模板数据库,用于快速创建新的 PDB
  • 不能被修改,只能被复制。

⏹优点:

  • 所有 PDB 共享 CDB 的内存和后台进程(如 SGA、PGA、日志进程等)。
  • 管理员可以通过 CDB 统一管理所有 PDB,例如备份、补丁和升级。
  • 提高硬件利用率,减少管理成本。

二. PDB(Pluggable Database,可插拔数据库)

PDB 是一个独立的数据库,可以插入到 CDB 中运行。每个 PDB 都是一个逻辑数据库,拥有自己的用户、模式和数据。

⏹特点

  • 独立性:
    • 每个 PDB 的用户、表空间、数据文件、数据字典是独立的。
    • 可以独立配置访问权限和安全策略。
  • 便携性:
    • 可以在不同的 CDB 之间迁移(通过插入/拔出操作)。
  • 快速部署:
    • 基于 PDB$SEED 模板创建,速度快且一致性强。
  • 支持多租户架构:
    • 一个 CDB 可以容纳多个 PDB,每个 PDB 可为不同的应用或租户服务。

三. CDB 与 PDB 的比较

bash 复制代码
+--------------------------+
|       CDB$ROOT           |   <-- 根容器,包含共享的系统资源
+--------------------------+
         |           |
   +-----+-----+     +------+
   |  PDB1     |     | PDB2 |   <-- 可插拔数据库,每个 PDB 都是独立的逻辑数据库
   +-----------+     +------+
         |
   +-----------+
   | PDB3      |   <-- 更多的 PDB
   +-----------+
bash 复制代码
CDB (容器数据库)
│
├── CDB$ROOT (根容器)
├── PDB$SEED (种子数据库)
├── PDB1 (可插拔数据库1)
├── PDB2 (可插拔数据库2)
└── PDB3 (可插拔数据库3)
特性 CDB PDB
定义 容器数据库,包含多个 PDB 可插拔数据库,是 CDB 的一部分
作用 提供资源和基础架构 逻辑数据库,存放具体业务数据
资源共享 所有 PDB 共享资源 独立使用 CDB 提供的资源
数据字典 维护全局数据字典 维护本地数据字典
创建方法 手动安装或从现有数据库转换 从种子数据库、现有 PDB 或 XML 创建
迁移能力 不能被迁移 可以在不同 CDB 之间迁移
文件存储 存放元数据和所有 PDB 的文件 拥有独立的数据文件和表空间
升级补丁 统一应用于整个 CDB 随 CDB 升级

四. 用户的种类

⏹在 Oracle 多租户架构中(从 Oracle 12c 开始),用户分为

  • 普通用户(Common User
    • 用户的名称必须以 C## 开头,在CDB中创建
    • 适用于管理员用户,用户管理CDB下的多个PDB
  • 本地用户(Local User
    • 用户的名称无需以 C## 开头,在PDB中创建
    • 更适合应用开发和租户管理
    • 我们平时开发时用的多是本地用户

五. XE 与 XEPDB1

⏹我们安装的oracle数据库是Oracle Database 21c Express Edition版本,执行lsnrctl status后,显示 Oracle Listener 的当前状态。


XE服务

  • XEOracle Express Edition 的默认服务名,通常用于连接到整个 CDB 的根容器(CDB$ROOT)。
  • 通过 XE 服务连接时,实际上是在与容器数据库的根容器交互。

XEPDB1服务

  • XEPDB1Oracle Express Edition 中默认创建的 PDB可插拔数据库)。
  • 通过 XEPDB1 服务连接时,可直接进入到该 PDB 的上下文中,我们开发中多用到。
相关推荐
考虑考虑3 分钟前
UNION和UNION ALL的用法与区别
数据库·后端·mysql
CL_IN17 分钟前
如何将聚水潭·奇门平台数据高效集成到MySQL
android·数据库·mysql
8643063371 小时前
在Visual Studio 2022中实现Qt插件开发
数据库·qt·visual studio
笑远1 小时前
Oracle/MySQL/PostgreSQL 到信创数据库数据同步简介
数据库·python·etl
z26373056112 小时前
Redis常用数据结构及命令详解:从基础到进阶
数据结构·数据库·redis
最好玩的游戏IDEA2 小时前
MySQL索引失效的8种情况
数据库
用户4099322502122 小时前
FastAPI 错误处理与自定义错误消息完全指南:构建健壮的 API 应用 🛠️
前端·数据库·后端
PawSQL2 小时前
PawSQL for TDSQL:腾讯云TDSQL数据库性能优化全攻略
数据库·sql·性能优化·腾讯云·pawsql
巴啦啦小魔仙变身3 小时前
Django-ORM-select_related
数据库·python·django·sqlite