如何配置Oracle 21c容器数据库_CDB与PDB架构基础设置
Oracle 21c默认不启用多租户,建库时必须指定ENABLE PLUGGABLE DATABASE,否则无法创建PDB;已建非CDB不能在线转换,需导出重建;V$DATABASE.CDB=’YES’才表示真正启用容器模式。创建CDB时必须指定 ENABLE PLUGGABLE DATABASEoracle 21c 默认不启用多租户架构,哪怕你装的是企业版。没加这个参数,后续根本无法创建pdb——不是报错,而是连 create pluggable database 命令都不存在。建库时在 CREATE DATABASE 语句末尾加:ENABLE PLUGGABLE DATABASE;用 DBCA 图形工具则必须勾选 “Create as Container Database”。漏掉就等于白装,重来成本高。如果已建好非CDB,不能在线转成CDB,只能导出再重建V$DATABASE 中 CDB 列为 YES 才算真正启用了容器模式未启用时执行 SHOW CON_NAME 会报 ORA-01031: insufficient privileges(其实是功能不可用,不是权限问题)连接CDB和PDB的tnsnames.ora配置容易混淆服务名默认安装后,tnsnames.ora 只配了 CDB 的全局服务名(比如 ORCLCDB),但 PDB 的服务名默认是独立生成的,不是简单拼接出来的。查当前PDB服务名:连进CDB后运行 SELECT NAME, DBID, OPEN_MODE FROM V$PDBS,再查对应服务:SELECT NAME FROM V$SERVICES WHERE NAME LIKE '%pdb1%'(假设PDB叫 PDB1)。常见错误是手动写成 ORCLCDB:PDB1 或 PDB1.ORCLCDB,实际服务名通常是 PDB1 或 PDB1.localdomain。首次创建PDB后,建议立刻执行 ALTER PLUGGABLE DATABASE PDB1 SAVE STATE,否则重启CDB后PDB默认不自动打开tnsnames.ora 中服务名必须和 V$SERVICES.NAME 完全一致,大小写敏感用 sqlplus /@pdb1 连不上?先确认 lsnrctl status 输出里有没有该服务名COMMON_USER和LOCAL_USER权限边界很硬,跨PDB操作常被静默拒绝Oracle 多租户下用户分两类:C## 开头的是 CDB 级公共用户,能在所有PDB里存在(但需显式授权);不带 C## 的是本地用户,只属于某个PDB。很多人以为用 sys as sysdba 连进PDB就能随便建用户,结果 CREATE USER u1 IDENTIFIED BY p1 报 ORA-65096: invalid common user or role name——因为当前容器是PDB,而没加 C## 前缀的语句被当成建 COMMON 用户处理。 VWO 一个A/B测试工具
更多推荐
所有评论(0)