Instance
由内存中的SGA和一系列的进程组成。
CDB
全长是multitenant container database。CDB由control file,online redo files and data files组成。
由此可见,Instance包含内存中的数据+进程, CDB则由磁盘上的一系列文件组成。Instance+CDB组成了可实现完整功能的Oracle database。
PDBs
是由用户创建的,物理上由一个或多个data files组成。
PDBs只有data files,而显然没有control file和redo files的协同工作,data files是无法独立工作的。因此PDBs需要“plug”到CDB才能使用,也就是说必须和CDB的control file,online redo files一起协同工作。
PDBs也可以被unplugged,unplugged后的PDBs包含一个或多个data files和一个metadata file。
PDB的架构让用户数据从数据库本身独立出来,可以“plug”和“unplugged”,也可以被拷贝/搬运到其他数据库服务器,因此更为灵活。
Application container
是可选的,由用户创建的容器。通常一个应用程序对应一个application container。application container需要被“plug”到CDB才能使用,而一个application container又可以“plug”多个PDBs。
由此可见,application container仅仅是在CDB和PDB之间又多加了一层,用于将同一个application的多个PDBs整合到一个application container之中,从而结构更清晰更便于管理。
例如现在有一个HR application,其数据存储在3个PDBs中。我们可以将这3个PDBs放到一个application container之中。当需要更换HR application数据所在的数据库服务器时,可以很方便地将application container“unplugged”并拷贝到新的数据库服务器。
以上就是Oracle的多租户架构(Multitenant Architecture),它让在同一台数据库服务器上的多个应用程序的多个用户数据库结构更清晰,更便于管理。