欢迎访问深圳敏捷云计算科技有限公司!

甲骨文云 Multitenant DB 1 : 轻松云服务器多租户架构入门

2024-01-15 原创文章

多租户架构使Oracle数据库能够作为多租户容器数据库(CDB)运行。这一特性在Oracle数据库12c及以后的版本中可用,因此您必须安装或升级到Oracle数据库12c或更高版本。数据库兼容性级别必须设置为12.0.0或更高版本,以使用多租户特性。以下是多租户架构中CDB/PDB如何相互交互的图像:

在上图中,我们有:

  • 一个CDB
  • 一个CDB$ROOT
  • 一个PDB$SEED
  • 三个直接链接到CDB的PDB
  • 两个应用根 - 一个有两个应用PDB和一个应用种子,另一个有三个应用PDB链接到它。
  • 以下是这些组件的一些详细信息:

什么是非NON-CDB数据库?

您熟悉的普通数据库,以及早期使用的数据库。只有一个简单的数据库,没有可插拔/容器数据库等。

所有Oracle数据库12c之前的数据库都是非CDB。

什么是CDB?

  • CDB是容器数据库。
  • 一个CDB包括零个、一个或多个客户创建的可插拔数据库(PDB)。
  • 在CDB中,大多数用户数据驻留在PDB中。根部分不包含用户数据或仅包含最少的用户数据。
  • CDB的磁盘存储空间需求是Oracle数据库安装所需的空间加上所有将成为CDB一部分的PDB的空间总和。

什么是PDB?

  • 一个PDB是一组模式、模式对象和非模式对象的可移植集合,对于一个Oracle Net客户端来说,它看起来像一个非CDB。

什么是系统容器?

  • 系统容器包括根CDB和CDB中的所有PDB。因此,系统容器是CDB本身的逻辑容器。
  • 容器是多租户架构内数据或元数据的“逻辑”集合。

CDB/PDB中的数据库实例概念是什么?

  • 数据库实例是一组管理数据库文件的内存结构。
  • 在物理层面上,CDB是由CREATE DATABASE语句创建的磁盘上的一组文件。
  • CDB包含一个或多个用户创建的PDB。一个PDB包含其自己的数据文件集,这些文件属于CDB的整体数据文件集。数据库实例管理与CDB及其PDB相关的数据,并为它们的用户提供服务。
  • 每个运行中的CDB至少与一个Oracle数据库实例关联。因为实例存在于内存中,而数据库(狭义上的术语)是磁盘上的一组文件,所以实例可以在没有数据库的情况下存在,而数据库也可以在没有实例的情况下存在。

CDB的内容可以是什么?

  • 每个CDB都可以有以下五种容器:

1.精确地一个CDB根容器(也简称为根)

  • CDB根是一组模式、模式对象和非模式对象的集合,所有PDB都属于这个集合
  • 根存储Oracle提供的元数据和公共用户。
  • 元数据的一个例子是Oracle提供的PL/SQL包的源代码。
  • 根容器名为CDB$ROOT。
  • CDB根不存储用户数据。
  • Oracle建议您不要向根添加公共对象或修改根中的Oracle提供的模式。但是,您可以创建公共用户和角色用于数据库管理。具有必要权限的公共用户可以在容器之间切换。
  • Oracle建议根字符集使用AL32UTF8。不同字符集的PDB可以驻留在同一个CDB中,无需进行字符集转换。

2.精确地一个系统容器

  • 系统容器包括根CDB和CDB中的所有PDB。因此,系统容器是CDB本身的逻辑容器,如前所述。

3.零个或多个应用容器

  • 应用容器由一个应用根和插入此根的PDB组成。
  • 虽然系统容器包含CDB根和CDB内的所有PDB,但应用容器只包含插入应用根的PDB。
  • 应用根属于CDB根,不属于其他任何容器。
  • 通常,您不会看到许多客户端使用应用容器设置。大多数客户端将在CDB内使用PDB。

4.零个或多个用户创建的PDB

  • PDB包含特定功能集所需的数据和代码。例如,一个PDB可以支持特定应用程序,如人力资源或销售应用程序。
  • 创建CDB时不存在PDB。您根据业务需求添加PDB。
  • 一个PDB精确地属于零个或一个应用容器。如果一个PDB属于一个应用容器,那么它就是一个应用PDB。
  • PDB是一组用户创建的模式、对象和相关结构,对客户端应用程序来说,它在逻辑上看起来像一个独立的数据库。
  • 每个PDB都由SYS拥有,无论是哪个用户创建的PDB。SYS是CDB中的一个公共用户。
  • 所有PDB都是用CREATE PLUGGABLE DATABASE语句创建的,除了Oracle提供的PDB$SEED。

5.精确地一个种子PDB

  • 种子PDB是CDB用来创建新PDB的系统提供的模板。
  • 种子PDB名为PDB$SEED。
  • 您不能在PDB$SEED中添加或修改对象。

PDBS类型分类

在轻松云服务器的多租户架构中,您可以创建以下类型的PDB(可插拔数据库):

1.标准PDB Standard PDB

  • 通过运行CREATE PLUGGABLE DATABASE而不指定PDB为种子、代理PDB或应用根来创建。
  • a) 插入CDB根的PDB:属于CDB根容器而非应用容器,不能使用应用公共对象。这是最常用的标准PDB类型。
  • b) 作为应用PDB插入:属于一个应用容器,与插入CDB根的PDB不同,应用PDB可以共享应用容器内的主应用定义。例如,应用根中的usa_zipcodes表可能是一个数据链接的公共对象,这意味着它包含所有插入此根的应用PDB都可以访问的数据。

2.应用根Application Root

  • 可以被视为特定应用的根容器,类似于嵌套在主容器内的容器。
  • 它充当应用后端的主定义存储库,包括公共数据和元数据。
  • 创建应用根时,连接到CDB根并在CREATE PLUGGABLE DATABASE语句中指定AS APPLICATION CONTAINER子句。

3.种子Seed PDBs

  • 与标准PDB不同,种子PDB不是为支持应用程序而设计的。
  • 种子是创建支持应用程序的PDB的模板。
  • 可以是插入CDB根的种子PDB(PDB$SEED)或应用种子PDB。

4.代理Proxy PDBs

  • 代理PDB是使用数据库链接引用远程CDB中的PDB。
  • 在代理PDB中执行语句时,该语句在被引用的PDB中执行。
  • 必须在连接到CDB根或应用根时创建代理PDB。
  • 代理PDB不经常使用。

多租户环境中使用的工具:

  1. SQL*Plus — 创建、管理和监控CDB和PDB。
  2. Oracle Enterprise Manager Cloud Control — 管理和监控CDB及其PDB。
  3. Oracle Enterprise Manager Database Express — 可为CDB、单独的托管PDB或两者配置。
  4. Oracle Database Configuration Assistant — 创建、迁移、克隆、插入和拔出PDB。
  5. Oracle SQL Developer — 客户端工具,提供图形用户界面,用于配置CDB、创建PDB、插入和拔出PDB、修改PDB状态、将PDB克隆到Oracle Cloud、热克隆/刷新PDB、在应用根之间迁移PDB等。
  6. Server Control (SRVCTL) 实用工具 — 创建和管理PDB的服务。

CDB-PDB中的命名规范:

  • 在CDB中的容器共享相同的命名空间,这意味着它们必须在此命名空间中具有唯一名称。
  • 对于以下容器,名称在同一CDB中不能冲突:CDB根插入CDB根的PDB应用根应用PDB
  • PDB和应用根容器的名称必须遵循与网络服务名称相同的规则。由于PDB或应用根有其自己的服务名称,容器名称必须在所有通过特定监听器暴露服务的CDB中是唯一的。

CDB中的公共和本地对象:

  • 公共对象:在CDB根或应用根中定义,并可以使用元数据链接或对象链接引用。数据库提供的公共对象在CDB$ROOT中定义,无法更改。Oracle数据库不支持在CDB$ROOT中创建公共对象。
  • 本地对象:所有不是公共对象的对象。


开启您的Oracle云之旅:Agilewing - 您的智能云服务伙伴

作为Oracle的高级合作伙伴,Agilewing正重新定义企业体验Oracle云服务的方式。借助于其简化的开户流程和一流的技术支持,Agilewing将复杂的开户和操作流程转化为一种轻松、直观的体验。通过我们的一站式服务,您可以迅速开启并享受Oracle云的全方位服务,从而无缝融入云端世界。

Agilewing的AgileCDN服务,结合了OCI的云基础服务,提供了一流的全球内容加速解决方案。超过2800个全球POP节点和7000个直连点的强大网络,确保了无论您的业务扩展到全球哪个角落,都能保持高效稳定的运行。

利用Oracle云的先进技术,Agilewing致力于简化云服务搭建、云迁移和业务出海的过程。我们的合作模式为客户带来经济高效的解决方案,使他们能够更加专注于核心业务,同时享受Oracle云的高性能和安全保障。

Oracle云服务,作为一个充满潜力的领域,以其高性能、安全性和全球统一的服务标准,为各类企业开启了新的机遇之门。通过Agilewing的专业服务,无论是个人用户还是企业,都能轻松步入这个充满技术革新和高效能的新时代。现在,就让Agilewing引领您开始探索Oracle云服务,打开一个全新的世界大门。

如您想咨询 Oracle 的相关业务,可联系搜索微信号:lhh1843812463woshiwhw123

或者可以进入以下群组进行咨询:

微信公众号

微信技术交流社群: