ORACLE_OCP多租户之容器数据库(CDB)和可插拔数据库(PDB)

ORACLE_OCP多租户之容器数据库(CDB)和可插拔数据库(PDB)

  • 文章目标:
    • 描述多租户架构
    • 描述ROOT数据库 CDB和PDB
    • 将根与PDB区分开
    • 说明PDB的插入操作
    • 列出各个结构对容器库的影响

一、挑战

  • 许多Oracle客户拥有大量基于Oracle RDBMS构建的“部门”级应用程序,这些应用程序:
    • 不需要太多硬件资源
    • 具有实例和存储开销,防止将大量“部门”数据库放置在同一物理服务器和存储服务器上
    • 不够复杂,无法吸引DBA的100%关注
    • 可能需要大量时间来打补丁或升级所有应用程序

二、非CDB架构

在这里插入图片描述

  • 多个整体式或非CDB,不共享以下内容:
    • 后台进程
    • 进程使用的物理内存
    • Oracle元数据的多重副本

三、新的多租户架构:优点

  • 在集中管理的平台中操作多个数据库以降低成本:
    • 减少实例开销
    • 降低存储成本
  • 降低DBA维护数据库成本,增强了数据库安全性:
    • 没有应用程序更改
    • 快速简便的配置
    • 节省打补丁和升级时间
    • 保持职责分离:
      • 不同的应用程序都具有相应的管理员
      • 应用程序管理员和DBA完全剥离
      • 应用程序内的用户完全剥离
  • 提供隔离特性
  • 确保与非CDB完全向后兼容
  • 与RAC完全兼容
  • 与企业管理器和资源管理器集成
  • 允许集中管理多个数据库
    • 备份/灾难恢复
    • 修补和升级

四、多租户构型

在这里插入图片描述

五、Oracle容器数据库

  • 单个数据库共享:
    • 后台进程
    • 共享进程内存
    • Oracle元数据

在这里插入图片描述

六、原始安装

  • 初始数据库创建后,唯一的对象是Oracle提供的对象.

在这里插入图片描述

七、用户数据已添加

  • 在非CDB中,已添加的用户数据包括:
    • 元数据与数据字典中Oracle提供的数据混合在一起.

在这里插入图片描述

八、分离系统和用户数据

在这里插入图片描述

九、用户容器中的SYSTEM对象

在这里插入图片描述

十、容器的命名

在这里插入图片描述

十一、设置可插拔数据库

在这里插入图片描述

  • 四种方法:
    • 从PDB$SEED可插入数据库创建新的PDB。
    • 插入非CDB。
    • 将一个PDB从另一个PDB中克隆到相同或另一个CDB中。
    • 将未插入的PDB插入相同或另一个CDB。

十二、在多租户容器数据库中进行交互

在这里插入图片描述

十三、多租户容器数据库架构 基于ORACLE 12C R1/R2

  • 单数据库共享:
    • 后台进程
    • 共享/进程内存
    • Oracle元数据
    • 重做日志文件
    • 控制文件
    • UNDO表空间

在这里插入图片描述

十四、容器

  • V$CONTAINERS中的两种容器:
    • The root container(根容器)
      • CDB创建时创建的第一个强制性容器
      • Oracle系统提供的通用对象和元数据
      • Oracle系统提供的普通用户和角色
    • Pluggable database containers (PDBs)可插拔数据库
      • 应用程序或用户的容器: (类似于我们ORACLE非CDB的SCHEMA)
        • 表空间(永久和临时)
        • Schemas/对象/权限
        • 创建/克隆/拔出/插入
      • 使用特定的种子PDB$SEED:快速配置新的PDB
      • CDB中包括种253个PDB的限制(12.1.0.x)。在12.2.0.x中可以有4096个PDB
      • CDB中限制512个服务

十五、问题:ROOT VS PDB

  • 什么属于CDB而不属于特定容器?
    • 控制文件 REDO日志文件 SPFILE
  • ROOT中的内容不在PDB中?
    • CDB的UNDO和默认TEMP表空间
    • 系统提供的元数据
    • 共享的Oracle提供的数据
    • PL / SQL Oracle提供的软件包(DBMS_SQL…)
    • PDB服务名称
    • CDB字典视图可提供跨PDB的信息
    • CDB资源管理器计划,允许CDB内的PDB之间进行资源管理

十六、问题:PDB VS ROOT

  • PDB中不在根目录或另一个PDB中的内容:
    • 应用程序表空间
    • 本地临时表空间
    • 本地用户和本地角色
    • 本地用户连接到他们所在的PDB
    • 非共享的本地元数据
    • 与其他PDB的非共享应用程序数据
    • PDB 资源计划
    • PDB 的本地UNDO

十七、术语

  • DBA, CDBA, and PDBA
  • 共有 VS 本地:
    • 用户
    • 角色
    • 权限
  • CDB vs PDB level:
    • CDB资源管理器计划与PDB资源管理计划
    • CDB或PDB级别的统一审计
    • CDB或PDB级别的流处理

十八、公共和本地用户

在这里插入图片描述

十九、公共和本地用户的权限和角色

在这里插入图片描述

二十、共享和非共享的对象

在这里插入图片描述

二十一、Data Dictionary Views—数据字典视图

在这里插入图片描述

SQL> SELECT view_name FROM dba_views WHERE view_name like ‘CDB%’;

  • CDB_pdbs: CDB中的所有PDBS
  • CDB_tablespaces: CDB中所有的表空间
  • CDB_users: CDB中所有的用户(共同的和本地的)
DBA数据字典视图在PDB中提供信息

SQL> SELECT table_name FROM dict WHERE table_name like ‘DBA%’;

二十二、使用CDB和PDB以后产生的相关影响

  • 所有PDB都使用一个字符集(建议使用Unicode)
  • 每个PDB都受初始化参数影响,但是只有一个spfile
  • 使用PDB相关的对象名称规范:
    • SELECT * FROM HR:apps.tab1
    • Use DB Links: SELECT * FROM apps.tab1@HR
  • DATAGUARD只在CDB级别
  • 仅每个PDB的Oracle Database Vault
  • 每个PDB一个主密钥来加密PDB数据
  • CDB和PDB级别的统一审计
  • Oracle Scheduler
  • Oracle GoldenGate
  • Oracle Streams
  • CDB和PDB级别的Oracle XStream
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值