1、Oracle Multitenant多租户数据库
Oracle Multitenant 是 Oracle Database 12c的一个新选件,它提供的新架构允许多租户容器数据库(CDB)容纳多个可插拔数据库(PDB)。现有数据库可以直接采用,无需更改应用程序。Oracle Multitenant 是对 Oracle Real Application Clusters和 Oracle Active Data Guard等选件的全面补充。
一个多租户容器数据库中的多个可插拔数据库共享内存和后台进程。相比于旧架构,这样可以整合更多的可插拔数据库,提供与基于模式的整合类似的优点,但避免了该方法所需的重大应用程序更改。
使用新的 SQL 命令,创建可插拔数据库、在容器间移动可插拔数据库和克隆可插拔数据库只需几秒钟的时间。当底层文件系统支持瘦供应时,只需在 SQL命令中使用关键字“snapshot copy”,几乎瞬间即可克隆 TB级数据。
只需投入修补一个多租户容器数据库的时间和精力,即可修补所有多个可插拔数据库。要修补一个可插拔数据库,只需将其拔/插到不同的 Oracle Database软件版本中的多租户容器数据库。
通过将现有数据库整合为可插拔数据库,管理员可以将多个数据库作为一个管理。例如,在多租户容器数据库级别执行备份和灾难恢复等任务。
Oracle Database 12c 中对资源管理器进行了扩展,加入了特定功能来控制多租户容器数据库中可插拔数据库之间的资源竞争。
2、CDB的组件
Root:即CDB$ROOT,保存了元数据及通用用户。如PL/SQL包的源码就是元数据。通用用户是指每一个容器都知道的数据库用户。
The root, namedCDB$ROOT, stores Oracle-supplied metadata andcommon users. An example of metadata is the source code for Oracle-suppliedPL/SQL packages. A common user is a database user known in every container. ACDB has exactly one root.
Seed:即PDB$SEED,它是创建PDB的模板,我们不能添加或修改Seed中的对象,并且一个CDB只能有一个Seed。
The seed, named PDB$SEED, is a templatethat you can use to create new PDBs. You cannot add objects to or modifyobjects in the seed. A CDB has exactly one seed.
PDBs:一个PDB对于用户或应用程序来说就像一个普通的数据库。
A PDB appears to users and applications asif it were a non-CDB. For example, a PDB can contain the data and code requiredto support a specific application. A PDB is fully backward compatible withOracle Database releases before Oracle Database 12c.
3、common user与local user
一个CDB支持多个common user。Common user 在root与PDB中具有相同的标识,并且可以登录root与任何其拥有权限的PDB。Common user能够执行的操作取决于对common user的授权。另外,一些管理操作,如创建PDB,拔出PDB等需要由common user来执行。
一个local user只存在于一个PDB中。
A CDB supports common users. A common useris a user that has the same identity in the root and in every existing andfuture PDB. A common user c