最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何创建Oracle19c容器数据库和PDB?
时间:2026-08-23 09:35:48 编辑:袖梨 来源:一聚教程网
安装时勾选“创建 Pluggable Database”仅生成MOUNTED状态的空壳PDB,不可直接使用;必须手动OPEN、创建业务用户及表空间、注册并验证服务名,且CREATE PLUGGABLE DATABASE需显式指定file_name_convert或启用db_create_file_dest,否则数据文件将误写入$ORACLE_HOME/dbs。
安装时勾选“创建 Pluggable Database”只生成一个 PDB$SEED 派生的空壳 PDB,状态为 MOUNTED,不能直接用。真正可用的 PDB 必须手动创建或补全三件事:OPEN、建业务用户、注册服务名。
CREATE PLUGGABLE DATABASE 语句必须带路径映射或启用 OMF
直接执行 CREATE PLUGGABLE DATABASE pdb1 ADMIN USER pdbadmin IDENTIFIED BY pwd 会报 ORA-65016。Oracle 19c 要求明确数据文件位置,否则默认写进 $ORACLE_HOME/dbs(非法路径)。
- 方案一:启用 Oracle Managed Files(OMF),在 CDB$ROOT 中执行:
ALTER SYSTEM SET db_create_file_dest = '/u01/app/oracle/oradata/cdb1'; - 方案二:显式指定
file_name_convert,注意路径末尾斜杠不能少:FILE_NAME_CONVERT = ('/u01/app/oracle/oradata/cdb1/pdbseed/', '/u01/app/oracle/oradata/cdb1/pdb1/') - 方案三:用
PATH_PREFIX+STORAGE控制基础目录和大小上限,但依然要配file_name_convert或 OMF,否则失败
刚创建的 PDB 默认 MOUNTED,不 OPEN 就连不进去
SHOW PDBS 看到状态是 MOUNTED 是正常现象,但这意味着你无法 ALTER SESSION SET CONTAINER = pdb1,更没法建用户或表空间。
- 必须先在 CDB$ROOT 中执行:
ALTER PLUGGABLE DATABASE pdb1 OPEN READ WRITE; - 加自启(否则重启 CDB 后又变 MOUNTED):
ALTER PLUGGABLE DATABASE pdb1 SAVE STATE; - RAC 环境下
SAVE STATE不生效,得靠 srvctl 配置启动依赖
连接 PDB 别用 SID,得靠 service_name
即使 PDB 已 OPEN,sqlplus user/pass@host:1521/pdb1 仍会报 ORA-12505 —— 因为监听器只注册了 CDB 的服务名(如 orclcdb),新 PDB 的服务名(如 orclpdb)不会自动广播。
- 查 PDB 实际服务名:
SELECT name FROM v$services WHERE pdb = 'PDB1'; - 手动注册(在 CDB$ROOT 中):
EXEC DBMS_SERVICE.CREATE_SERVICE('orclpdb', 'orclpdb');EXEC DBMS_SERVICE.START_SERVICE('orclpdb'); - 确认监听器已加载:
lsnrctl status输出里要有Service "orclpdb",没有就说明没注册成功,再重启监听器
切容器前必须确保 DEFAULT TABLESPACE 已存在
在 PDB 内建用户时报 ORA-65048 或卡在 ALTER SESSION SET CONTAINER,往往是因为 PDB 内缺少 USERS 表空间,或 DEFAULT TABLESPACE 参数指向了一个不存在的表空间。
- 切换前先检查:
ALTER SESSION SET CONTAINER = pdb1;→ 成功后立即查:SELECT property_name, property_value FROM database_properties WHERE property_name = 'DEFAULT_TABLESPACE'; - 如果返回
USERS但SELECT tablespace_name FROM dba_tablespaces里没有,就得手工建:CREATE TABLESPACE users DATAFILE '/u01/app/oracle/oradata/cdb1/pdb1/users01.dbf' SIZE 100M; -
DEFAULT TABLESPACE必须在 PDB 内已存在,且不能是SYSTEM或SYSAUX
最常卡住的地方不是 CREATE 语句写错,而是 file_name_convert 路径少斜杠、SAVE STATE 在 RAC 下失效、DEFAULT TABLESPACE 名字拼错或根本没建——这些细节一漏,PDB 就永远停在 MOUNTED,连 ALTER SESSION 都进不去。
相关文章
- 远古战役破解版最新版—破解版无限仙玉版下载 09-07
- Tplink路由器已离线无法使用网络的原因分析(如何判断Tplink路由器是否已离线) 09-07
- 浪漫餐厅兑换码全平台可用汇总—礼包码真实有效2026 09-07
- 洛克王国世界S1赛季什么时候结束 S1赛季将会持续到几号 09-07
- 正统三国平民最强攻略 0氪金武将选择推荐 09-07
- 远古战役0.1折下载—折扣版在哪里解锁 09-07