Oracle 21c 强制启用 CDB 模式,安装仅提供 CDB 选项且 CREATE DATABASE 必须带 ENABLE PLUGGABLE DATABASE;单实例安装即创建 CDB+PDB,连接默认进入 CDB$ROOT,业务操作需切换至 PDB。
oracle 21c 不是“更推荐”用可插拔数据库(pdb),而是根本没得选——create database 必须带 enable pluggable database,否则直接报错 ora-65096 或卡在 alter database open 阶段抛出 ora-65137。
Oracle 21c 安装时为什么看不到“非CDB”选项
安装界面里压根不提供“非容器数据库”路径,不是漏了,是官方彻底删了代码分支。无论选“桌面类”还是“服务器类”,背后都是自动创建 CDB + 至少一个 PDB。如果你只装软件不建库,后续必须手动跑 dbca -silent -createDatabase -enablePluggableDatabase,否则实例起不来。
连接默认进 CDB$ROOT,但业务该连哪个 PDB
刚装完,sqlplus / as sysdba 默认连的是根容器 CDB$ROOT,这里不能建业务表、用户或应用对象。真正干活的地方是 PDB,比如默认生成的 ORCLPDB1:
-
sqlplus sys@ORCLPDB1 as sysdba—— 连指定 PDB,适合 DBA 管理 -
sqlplus hr@ORCLPDB1—— 应用账号直连 PDB,这才是日常开发/运维路径 - 监听器配置里会同时注册
orcl(CDB 服务名)和orclpdb(PDB 服务名),别连混
PDB 级别的 ADG 和备份恢复逻辑已成标配
从 21c 开始,RMAN 备份、Data Guard 同步、甚至 Flashback 都按 CDB/PDB 分层设计。比如:
-
BACKUP DATABASE在 CDB$ROOT 下执行,会备份整个 CDB(含所有 PDB) - 但
BACKUP PLUGGABLE DATABASE ORCLPDB1可单独备份单个 PDB,恢复也只影响该 PDB - ADG 的 Switchover 现在支持 PDB 级粒度切换,不用整库切,业务中断面更小
- 旧版脚本里写的
RECOVER DATABASE在 21c 里可能失败,因为内核强制要求先ALTER PLUGGABLE DATABASE ... OPEN
真正容易被忽略的点是:PDB 不是“子库”,它没有独立的后台进程或内存结构——所有资源由 CDB 实例统一调度。这意味着调优不能只看 PDB 内部的 V$SQL,还得盯住 CDB 层的 V$CONTAINERS 和 V$PDBS 视图,否则性能问题会误判为“某个 PDB 慢”,实际可能是 CDB 共享池争用或 I/O 调度瓶颈。


















