本教程深入讲解Oracle 12c中多租户架构的核心概念,重点介绍CDB(容器数据库)和PDB(可插拔数据库)的创建、配置及管理技巧。
### Oracle 12c CDB与PDB管理
#### 一、概述
在Oracle 12c版本中引入了一种新的数据库架构——多租户(Multitenant)架构,它允许在一个容器数据库(Container Database, CDB)中托管多个可插拔数据库(Pluggable Database, PDB)。这种架构极大地简化了数据库管理,降低了运维成本,并提供了更高的资源利用率。
#### 二、多租户环境
多租户环境是指在一个物理数据库实例中可以运行多个逻辑上相互隔离的数据库。这种方式有助于减少硬件需求、简化备份恢复操作,并能够更好地实现资源管理。在Oracle 12c中,通过CDB和PDB实现了这一目标。
#### 三、CDB与PDB的关系
- **CDB**: 容器数据库,是包含一个或多个PDB的数据库。每个CDB都有一个根容器(root container),该容器用于管理CDB中的所有PDB。
- **PDB**: 可插拔数据库,是独立的数据库,可以在不同的CDB之间移动。每个PDB都包含自己的数据字典、用户表空间等。
CDB与PDB之间的关系可以用下面的图形来表示:
```
+------------+ +--------------+
| CDB Root |------------| PDB1 |
| | +--------------+
| |----------------------| PDB2 |
+----------+ +--------------+
```
#### 四、检查数据库是否为CDB
要确定当前数据库是否启用了多租户选项,可以查询`v$database`视图。具体命令如下:
```sql
SELECT name,
DECODE(cdb, YES, Multitenant Option enabled, Regular 12c Database) Multitenant_Option,
open_mode,
con_id
FROM v$database;
```
如果返回的结果中“Multitenant Option”列显示为“Multitenant Option enabled”,则表示该数据库为CDB,并且启用了多租户选项。
#### 五、连接到CDB
连接到CDB有两种主要方式:通过命令行工具和服务管理工具。
##### 5.1 简易方式连接
通过命令行工具查看服务状态,例如使用`lsnrctl service`命令可以检查监听器的状态:
```bash
[oracle@togogo ~]$ lsnrctl service
```
如果监听器没有启动,则需要先启动监听器:
```bash
[oracle@togogo ~]$ lsnrctl start
```
启动后,可以通过`sqlplus`命令连接到CDB:
```bash
[oracle@togogo ~]$ sqlplus as sysdba
```
##### 5.2 使用SQL*Plus连接
一旦成功连接到CDB,可以通过SQL*Plus执行各种数据库管理任务,包括创建和管理PDB等。
#### 六、总结
通过以上介绍可以看出,在Oracle 12c中,多租户架构提供了一种全新的数据库管理和部署模型。CDB作为基础容器,包含了多个PDB,每个PDB都是一个完整的数据库,但又共享同一个CDB的资源。这种方式不仅提高了资源利用率,还简化了数据库管理,降低了总体拥有成本(TCO)。对于企业级应用来说,这是一个非常重要的特性。