Oracle的多租户架构
1.Root:又名CDB$ROOT,用来存储Oracle提供的metadata和common user。metadata的一个例子是Oracle提供的PL/SQL包的源代码。common user 指的是一个所有容器都知道的数据库用户(注意,当我们想在数据库中创建用户的时候,一般是不能往ROOT中创建的。需要先通过语句alter session set container=PDB's name 转换到相应名称的PDB下再创建用户
2.Seed:又名PDB$SEED,用来创建新的PDB模板。但是,不能在Seed里添加或者修改对象,一个CDB只能有一个Seed。
3.PDB:全称为Pluggable Database,中文翻译为可插拔数据库。PDB展现给用户和应用的形象就像是一个没有CDB的普通数据库,比如hrpdb salespdb等。一个PDB包括支持一个特定应用程序所需的所有数据和代码。PDB 完全向后兼容Oracle 12c之前版本的所有数据库。
4.CDB:以上的每个组成部分都被称为容器(container),Root、Seed、PDB都是容器。CDB就是接管这个容器的数据库。这些容器在CDB中都有它们自己唯一的容器ID和名称。我们可以很轻松地向 CDB 中插入一个PDB 或者从 CDB 中拔出一个PDB。当将一个PDB 插入CDB中时,相当于将这个PDB与CDB连接起来,反之则解除关系。
多租户架构的好处
- 省资源(PGA和SGA共用一套,消耗内存少)
- 增加资源使用率(可以随意增加各种数据库)
- 管理方便(可以轻松管理各个PDB,通过CDB即可完成,可以统一启停数据库)
- 迁移方便(从这个CDB到那个CDB可轻松完成)