Oracle12c中PDB、CDB、用户之间的关系
程序员文章站
2022-03-23 20:48:43
CDB:CDB全称为Container Database,容器数据库。(公用用户)
PDB:PDB全称为Pluggable Database,可插拔数据库。(本地用户)
关系如...
CDB:CDB全称为Container Database,容器数据库。(公用用户)
PDB:PDB全称为Pluggable Database,可插拔数据库。(本地用户)
关系如下图:
通过上图我们可以清楚的看到CDB的组成部分:
1、ROOT:ROOT又叫CDB$ROOT, 存储着ORACLE提供的元数据和Common User(公用用户),元数据的一个例子是ORACLE提供的PL/SQL包的源代码,Common User 是指在每个容器中都存在的用户。 一个CDB只能有一个根。
2、SEED:Seed又叫PDB$SEED,这个是你创建PDBS数据库的模板,你不能在Seed中添加或修改一个对象。一个CDB中有且只能有一个Seed. 这个感念,个人感觉非常类似SQL SERVER中的model数据库
3、PDB:PDB展现给用户和应用的形象就像是一个没有CDB的普通数据库一样。例 如,一个PDB可以包括支持一个特定应用程序所需的所有数据和代码。PDB 完全向后兼容Oracle12c之前版本的所有数据库。
这些组件中的每一个都可以被称为一个容器。因此,ROOT(根)是一个容器,Seed(种子)是一个容器,每个PDB是一个容器。每个容器在CDB中都有一个独一无二的的ID和名称。
我们可以很轻松的向CDB中插入一个PDB或者从CDB中拔出一个PDB。当我们将一个PDB插入CDB中时,相当于将这个PDB与CDB连接起来。反之则解除关系。
这大大方便了数据的迁移。我们可以很方便的将一个特定的PDB从一个CDB挪到另一个CDB上面而不改变里面的任何数据和架构。当然,一个PDB只能在同一时间内插入一个CDB而不是多个。每一个PDB都有自己独一无二的全局唯一标识符(GUID)来预防PDB的错乱使用。