大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
多租户体系结构允许 Oracle 数据库作为多租户容器数据库 (CDB) 运行。
CDB 包括零个、一个或多个客户创建的可插拔数据库 (PDBs) 。 PDB 是模式、模式对象和非模式对象的便携式集合,在 Oracle Net 客户端看来,这些对象是 non-cdb 。 Oracle 数据库 12c 之前的所有 Oracle 数据库都是 non-cdbs 数据库。
容器既可以是 PDB 也可以是 root 。 root 容器是 schemas , schema objects 和属于 PDBs 的 non-schema objects 对象的集合;每个 CDB 有如下几个容器:
l 有且仅有一个 root 容器,即 CDB$ROOT
l 有且仅有一个 seed PDB ,即 PDB$SEED ,它是创建 PDB 的模板。由系统创建并维护,用户不能增加、修改其中对象;
l 0 或者多个用户创建的 PDB
Figure 17-1 CDB with Two PDBs
通过这幅图来简单说明一下多租户容器数据库; oracle 12c 可以创建 CDB 数据库,也可以创建 non-CDB 数据库。 non-CDB 数据库不用多说,即可以像之前的 11g , 10g 数据库一样使用。 CDB 数据库多了容器的概念,可以理解为 CDB 中的所有数据库都是容器, CDB$ROOT 、 PDB$SEED 、 PDB ( hrpdb 、 salespdb )都是容器;
l CDB$ROOT 根容器比较特殊,有且仅有一个,存储的是整个 CDB 的元数据和 common users ,系统包的源代码;例如,系统性能视图的定义和数据都统一存储在这个容器中,其他 PDB 通过 metadata link 和 object link 机制进行调用;
l PDB$SEED 是系统内置创建用户 PDB 的模板。由系统创建并维护,用户不能增加、修改其中对象;
l PDB 则是用户创建和迁移过来的 non-cdb 数据库,可以由 PDB$SEED 新建,通过其他 PDB 创建,或者从 non-cdb 创建而来;单独存储用户数据,可以单独启停,可以单独插拔的数据库;
另外, CDB 中数据库管理与之前会有不少的差别,主要体现在数据字典、用户( common 、 local )、角色( common 、 local )、权限和角色的授予、审计配置、服务( service , connect )等等方面。不理解、不熟悉这些差别会对日常运维产生不少的困扰;上面简单介绍了逻辑层的一些概念,下面再看一下物理层的数据文件、表空间的差别;
Figure 18-8 Architecture of a CDB
图中可以看到, CDB 实例可管理多个容器,每个容器( PDB 、 CDB$ROOT )都有自己的 system 、 sysaux 、 temp 等表空间; undo 表空间和 online redo log 通过 CDB$ROOT 统一管理;每个 PDB 有各自用户表空间;所有容器的表空间对应的数据文件,临时文件分别独立存放和管理;控制文件和参数文件有 CDB 实例管理;
• 降低成本
通过将硬件和数据库基础设施整合到一组后台进程,并有效地共享计算和内存资源,可以降低硬件和维护成本。
== 》
• 更容易、更快速地移动数据和代码
根据设计,可以将 PDB 插入 CDB ,将 PDB 从 CDB 中拔出来,然后将这个 PDB 插入另一个 CDB 。因此,您可以轻松地将应用程序的数据库后端从一台服务器移动到另一台服务器。
• 更容易管理和监控物理数据库
CDB 管理员可以通过对用户和 CDB root 执行单个操作 ( 例如打补丁或者执行 RMAN 备份 ) ,将环境作为一个集合来管理。
• 数据和代码的分离
尽管被整合成一个单一的实体 CDB ,但 PDBs 模仿了传统非 cdbs 的行为。例如, PDB 管理员可以在 PDB 上下文中刷新共享池或缓冲区缓存,而不会影响 CDB 中的其他 PDBs 。
• 易于性能调优
与多个非 cdbs 相比, CDB 更容易收集性能指标。确定一个 SGA 的大小比确定几个 SGA 的大小更容易。
• 支持 Oracle 数据库资源管理器
在任何共享资源环境中,管理员必须管理系统资源,以便为用户提供可预测的环境,并处理意外或短暂的资源争用。要解决这些问题并提供资源使用监视,您可以使用 Oracle 数据库资源管理器。
• 减少补丁和升级
将一个补丁应用于一个 CDB 比应用于多个非 cdbs 要容易,升级一个 CDB 比升级多个非 cdbs 要容易。
当您在多个 Oracle 数据库安装的不同硬件上部署了许多非 cdbs 时,多租户环境尤其有用。这些非 cdbs 可能只使用硬件资源的一小部分,而且每个都可能不需要全职数据库管理员来管理。
通过将这些非 cdbs 组合到 CDB 中,可以更好地利用硬件资源和数据库管理员资源。此外,您可以将 PDB 从一个 CDB 移动到另一个 CDB ,而不需要更改依赖于 PDB 的应用程序。