本文共 1962 字,大约阅读时间需要 6 分钟。
Oracle 12C 引入了容器数据库(CDB,即 Container Database)和可插拔数据库(PDB,Pluggable Database)这一颖新特性。在 ORACLE 12C 的多租用户环境(Multitenant Environment)中,一个 CDB 可以承载多个 PDB,每个 PDB 都可以像传统的数据库那样运行。
在 12C 之前,数据库实例与数据库是一对一或多对一的关系(RAC)。但在 12C 中,实例与数据库的关系可以变成一对多。一种常见的安装方式是,默认安装一个 CDB 和一个 PDB,例如 pdborcl。
重点
12C 引入了跨实例的服务 thereby ,允许多个实例同时访问同一个 CDB 的 PDB。
CDB 包括以下几个关键组件:
ROOT(CDB$ROOT)
ROOT 是 CDB 的根容器,存储 ORACLE 提供的元数据和通用用户。例如,ORACLE 提供的 PL/SQL 包代码,及每个容器中存在的默认用户。SEED(PDB$SEED)
SEED 是 PDB 模板,你不可以在 SEED 中添加或修改对象。CDB 中只允许一个 SEED,类似于 SQL Server 的 model 数据库。PDB(可插拔数据库)
CDB 可以包含多个 PDB。每个 PDB 都是独立的容器,可以像传统数据库那样操作。关键点
ROOT、SEED 和 PDB 都被视为容器,每个容器都有独特的 ID 和名称。
CDB 操作
$ sqlplus / as sysdbaSELECT name, decode(cdb, 'YES', 'Multitenant Option enabled', 'Regular 12c Database: ') "Multitenant Option", open_mode, con_id FROM v$database;
SHOW con_name; SELECT sys_context('userenv', 'con_name') "Container DB" FROM dual;PDB 操作
SHOW pdbs; SELECT con_id, dbid, guid, name, open_mode FROM v$pdbs;
ALTER SESSION SET container=PDB_NAME;
ALTER PLUGGABLE DATABASE PDB_NAME open; ALTER PLUGGABLE DATABASE PDB_NAME close;
shutdown immediate; startup;
创建新 PDB:
CREATE PLUGGABLE DATABASE new_pdbadmin user admin identified by oracle;ALTER PLUGGABLE DATABASE new_pdb open;
克隆 PDB:
CREATE PLUGGABLE DATABASE cloned_pdb FROM original_pdb;ALTER PLUGGABLE DATABASE cloned_pdb open;
删除 PDB:
ALTER PLUGGABLE DATABASE old_pdb close; DROP PLUGGABLE DATABASE old_pdb including datafiles;
在 12.2 中,进一步增强了多租户功能。CDB 根容器可以创建一个叫做 Application Root 的容器,可在其内创建多个依赖于 Application Root 的 Application PDB。架构如下:
CDB$ROOT ├── Application Root │ └── PDB1 (Application PDB) │ └── PDB2 (Application PDB) ├── PDBA (User Database) └── PDBB (User Database)
通过以上内容,可以清晰地理解 Oracle 12C 中的 CDB 和 PDB 关系。CDB 作为数据库容器,管理多个可插拔的 PDB。每个 PDB 都是独立的容器,可被单独管理和运作。这种架构使数据库管理员能够充分利用资源,实现多租户支持。
转载地址:http://fzqiz.baihongyu.com/