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 的上下文中,我们开发中多用到。
相关推荐
Run Out Of Brain9 分钟前
Windows平台下如何手动安装MYSQL
数据库·mysql
喻师傅1 小时前
SQL—替换字符串—replace函数用法详解
android·数据库·sql
Wind哥1 小时前
VS2022引入sqlite数据库交互
数据库·c++·sqlite
童安格粉丝1 小时前
linux下安装达梦数据库v8详解
linux·数据库·centos·达梦·安装·客户端·v8
李歘歘1 小时前
Redis数据库——Redis雪崩、穿透、击穿
java·数据库·redis·mysql·缓存·go
凡人的AI工具箱1 小时前
每天40分玩转Django:Django实战 - 在线打印服务系统
网络·数据库·后端·python·django
开心工作室_kaic1 小时前
springboot571基于协同过滤算法的私人诊所管理系统(论文+源码)_kaic
前端·数据库·vue.js·后端·html5
代码代码快快显灵2 小时前
Redis的数据结构(基本)
数据库·redis·缓存
SG.xf2 小时前
企业级Nosql数据库和Redis集群
数据库·redis·nosql