Oracle 12c CDB NO(Container Database Non-Optional Feature)是一项数据库特性,允许在容器数据库上创建非容器数据库,以满足像多租户和别名分布式数据库这样的需要。CDB NO可以实现物理隔离、逻辑隔离、管理隔离和资源隔离,从而在减少数据库维护成本的同时提高了系统的安全性和可用性。
相较于传统的方法,CDB NO在创建非容器数据库时需要指定CDB$ROOT和PDB$SEED数据库的信息作为模板。下面是基于官方文档的一个创建CDB NO的示例:
CREATE PLUGGABLE DATABASE mypdb FROM CDB$ROOT
FILE_NAME_CONVERT = ('/u02/oradata/CDB1/pdbseed/', '/u02/oradata/CDB1/mypdb/');
ALTER PLUGGABLE DATABASE mypdb open;
在上述示例中,CDB$ROOT指的是容器数据库的根级别,PDB$SEED是Oracle提供的默认模板数据库。生成文件的转换操作(原文件路径 ->新文件路径)在创建非容器数据库时必需,并且要使用PDB_SEED$file的元数据作为参考。这样才能保证生成的非容器数据库具有与CDB$ROOT和PDB$SEED数据库相同的一致性、完整性和性能。
CDB NO还支持一个重要的特性:多租户数据库。利用多租户技术,能够将多个用户或应用程序隔离在同一个数据库内,让它们共享同一套资源和数据,从而避免成本和管理问题。下图展示了一个基于CDB NO创建的多租户数据库架构:
在这个架构中,每个非容器数据库对应一个虚拟租户(Tenant),租户之间互相独立、隔离和受限,安全性很高。此外,每个非容器数据库都是独立创建的、独立管理的,可以支持专门的数据库管理员和网络管 理员。当需要进行备份和恢复操作时,也可以利用CDB NO技术进行快照、分区和恢复操作,大大简化了复杂度和工作量。
总之,在Oracle 12c CDB NO的帮助下,可以非常方便地创建和管理一个多租户或者分布式数据库。只需要一些简单的配置和操作,就可以安全地将多个应用程序和用户隔离开来,让其共享同一套资源和数据,大大节约了管理成本和提高了整个系统的可用性和安全性。