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个服务
- 应用程序或用户的容器: (类似于我们ORACLE非CDB的SCHEMA)
- The root container(根容器)
十五、问题: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
标签:插拔,容器,CDB,数据库,应用程序,Oracle,PDB 来源: https://blog.csdn.net/XiaoHG_CSDN/article/details/112388330