必须勾选“创建为容器数据库”复选框,该操作在DBCA图形界面的“配置选项”页完成,勾选后CDB Name和PDB Name字段才激活;不勾选则生成non-CDB,CDB列永久为NO,无法通过任何SQL或参数修改补救。
必须在dbca建库时勾选“创建为容器数据库”,否则永远无法补救——这不是配置项,是数据库类型的一次性硬编码。
DBCA图形界面中哪一步决定CDB身份
关键操作发生在“配置选项”页(不是模板页、也不是存储页),此处有明确复选框:创建为容器数据库(Create as Container Database)。不勾选,DBCA就按传统non-CDB流程走,生成的数据库CDB列永远为NO,后续任何SQL或参数修改都无法逆转。
- 勾选后,
CDB Name和PDB Name字段才被激活;留空会用默认名CDB$ROOT和PDB$SEED,但建议显式填入业务相关名称(如hr_cdb、hr_pdb) - 该页**不提供资源分配功能**:没有CPU滑块、没有内存输入框。所谓“分配资源”是后续通过
DBMS_RESOURCE_MANAGER绑定PDB级资源计划实现的 - 静默模式下对应参数是
-createAsContainerDatabase true,漏掉true或拼错大小写(如True)会导致静默失败且无明确报错
创建后立刻验证的三个必要命令
DBCA点完Finish不代表CDB就绪。常见问题都卡在状态未确认:
- 连
/ as sysdba后执行:SELECT NAME, CDB FROM V$DATABASE;—— 输出CDB必须为YES,否则说明建库失败或误选了non-CDB模板 - 查PDB列表:
SELECT CON_ID, NAME, OPEN_MODE FROM V$PDBS;—— 新建PDB默认是MOUNTED,不是READ WRITE;PDB$SEED始终是READ ONLY - 若发现目标PDB为
MOUNTED,必须手动执行:ALTER PLUGGABLE DATABASE <pdb_name> OPEN;(注意不是STARTUP)
ORA-65096这类错误的真正根源
看到ORA-65096: invalid common user or role name或ORA-65131: the SELECT privilege cannot be granted to a common user,90%是因为你正在一个non-CDB里执行CDB专属语法——比如用CREATE USER c##admin IDENTIFIED BY pwd;,而当前库根本不是CDB。
- 不要急着改SQL,先运行
SELECT CDB FROM V$DATABASE;。如果是NO,所有CDB/PDB相关操作都无效 - 不要尝试用
ALTER DATABASE ENABLE PLUGGABLE DATABASE;之类的语句“升级”,Oracle 12c及以上版本不支持运行时开启多租户 - 唯一解法是重建CDB:备份数据→删除实例→DBCA重来,并确保那一页的复选框打了勾
最易被忽略的点是PDB的OPEN_MODE状态。很多人以为DBCA创建完就能连PDB,结果sqlplus hr/hr@hr_pdb报ORA-01033: ORACLE initialization or shutdown in progress,其实只是PDB还躺在MOUNTED里没醒过来。


















