必须在DBCA“配置选项”页勾选“创建为容器数据库”,否则生成的库永远是non-CDB,无法通过任何SQL或参数修改补救;该复选框决定CDB身份,勾选后CDB Name和PDB Name字段才激活,且静默模式下必须显式指定-createAsContainerDatabase true。
必须在dbca“配置选项”页勾选“创建为容器数据库”,否则生成的库永远是non-cdb,alter database enable pluggable database这类语句无效,重建是唯一解法。
DBCA图形界面中哪一步决定CDB身份
关键操作只发生在“配置选项”页(不是模板页、也不是存储页),此处有明确复选框:Create as Container Database。不勾选,DBCA就按传统non-CDB流程走,生成的数据库在V$DATABASE.CDB列中永远显示NO,后续任何SQL或参数修改都无法逆转。
勾选后,CDB Name和PDB Name字段才被激活;留空会用默认名CDB$ROOT和PDB$SEED,但建议显式填入业务相关名称(如hr_cdb、hr_pdb)。
- 该页不提供资源分配功能:没有CPU滑块、没有内存输入框。所谓“分配资源”是后续通过
DBMS_RESOURCE_MANAGER绑定PDB级资源计划实现的 - “创建为容器数据库”复选框位于“配置选项”页中部偏下,容易被快速跳过;很多DBA误以为在“数据库类型”或“模板选择”页设置,结果建完才发现
CDB=NO - 如果使用“通用用途”模板但未勾选此项,仍生成non-CDB——模板本身不决定CDB身份,仅此复选框起效
静默模式下-createAsContainerDatabase参数必须显式设为true
静默创建时,对应参数是-createAsContainerDatabase true。漏掉true值,或拼错大小写(如True、TRUE),DBCA会静默失败且无明确报错,最终生成的仍是non-CDB。
- 正确写法:
dbca -silent -createDatabase ... -createAsContainerDatabase true - 错误写法:
-createAsContainerDatabase TRUE(Oracle 19c对大小写敏感,只认小写true) - 错误写法:
-createAsContainerDatabase(缺值,等价于false) - 静默模式下不会提示“你没选CDB”,也不会校验
sysPassword等必填项是否缺失,失败日志通常只含Progression log: DBCA_PROGRESS : 100%,但V$DATABASE.CDB查出来是NO
创建后必须立刻验证CDB状态和PDB打开模式
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) - 很多人以为DBCA创建完就能连PDB,结果
sqlplus hr/hr@hr_pdb报ORA-01033: ORACLE initialization or shutdown in progress,根源就是PDB没OPEN
最易被忽略的点是PDB的OPEN_MODE状态,以及CDB列是否为YES——这两个值必须同时满足,才算真正可用的CDB环境。其他所有操作(建用户、授权限、配监听)都建立在这两个前提之上。


















