给用户介绍Oracle多租户新特性时,多次忍不住将CDB比喻为航母,PDB则是停靠之上的舰载机。没想到18c竟然出了航母战斗群,^_^
18c中引入了CDB fleet新特性,能够实现以下的功能:
- 扩容PDB支持数量,单个CDB最大能够支持4096个PDB,CDB fleet大大扩展了这一数量;
- 多CDB数据库的集中管理,降低管理成本;
- CDB fleet支持所有的数据库功能,如Oracle RAC,RMAN,基于时间点的恢复,Flashback等。
CDB fleet中有两个概念:CDBLead和CDB members。
在CDB Lead中能够进行所有CDB的管理,设置完成后,fleet中所有的PDB都对CDBLead可见,在Lead中可以使用以下方式获取全局信息,实现全局管理:
- CDB和GV$视图
- CONTAINERS字句以及CONTAINER_MAP
CDB Members则通过DBLink和CDB Lead进行通讯。
简单记录配置过程:
CDB Lead
1. 设置LEAD_CDB
ALTER SESSION SET CONTAINER = CDB$ROOT;
ALTER DATABASE SET LEAD_CDB = TRUE;
SELECT PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME='LEAD_CDB';
PROPERTY_VALUE
----------------------
TRUE
2. 创建用于CDB Member连接的用户
create user c##cf1 identified by oracle;
grant dba to c##cf1;
CDB member
1. 配置连接串
lead_pod =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.56.19)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ora18c)
)
)
2. 创建连接CDB Lead的DB LINK
CREATE PUBLIC DATABASE LINK lead_link
CONNECT TO C##CF1 IDENTIFIED BY oracle
USING 'lead_pod';
3. 设置LEAD_CDB_URI属性
ALTER DATABASE SET LEAD_CDB_URI ='dblink:LEAD_LINK';
SELECT PROPERTY_VALUE FROMDATABASE_PROPERTIES WHERE PROPERTY_NAME='LEAD_CDB_URI';
PROPERTY_VALUE
--------------------------------------------------------------------------------
dblink:LEAD_LINK
CDB Lead
1. CDB Lead中确认CDB Member信息
SQL> select pdb_name, status from cdb_pdbs;
PDB_NAME STATUS
------------------------------------------------------------------------------------------------------------------------------------------
PDB$SEED NORMAL
orclcdb STUB
PDB1 NEW
PDB2 STUB
PS: 状态为STUB的PDB信息来自于CDB Member.