PDB表空间不能继承CDB设置,必须在PDB上下文中显式创建:先ALTER SESSION SET CONTAINER=pdb_name,再CREATE TABLESPACE、ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE,并用CDB_TABLESPACES或切换容器后查DBA_TABLESPACES验证。
在 oracle 12c 多租户环境下,pdb 的表空间**不能继承 cdb 的默认设置,必须在 pdb 上下文中显式创建和配置**。直接在 cdb$root 中操作 create tablespace 或 alter database default tablespace 对目标 pdb 无效,这是新手最常踩的坑。
确认当前会话处于目标 PDB 上下文
所有 PDB 级别的表空间操作,前提是你已连接到该 PDB(而非 CDB$ROOT)。否则命令会静默失败或作用于错误容器。
- 用
SHOW CON_NAME确认当前容器名,输出应为类似PDB1,而非CDB$ROOT - 若连的是 CDB$ROOT,需先切换:
ALTER SESSION SET CONTAINER = pdb1; - 也可用 EZCONNECT 方式直连:
sqlplus sys@localhost:1521/pdb1 as sysdba
创建 PDB 专属数据文件和表空间
PDB 的数据文件路径必须独立于 CDB 和其他 PDB,否则可能触发 ORA-65096(非法公共用户名)或 ORA-01119(文件已存在)等错误。
- 路径建议使用子目录隔离,例如:
'/u01/oradata/CDB1/PDB1/users01.dbf',避免与 CDB 的/u01/oradata/CDB1/system01.dbf混用 - 建表空间时指定
EXTENT MANAGEMENT LOCAL(PDB 强制要求):CREATE TABLESPACE users_pdb1 DATAFILE '/u01/oradata/CDB1/PDB1/users01.dbf' SIZE 100M AUTOEXTEND ON NEXT 10M MAXSIZE 2G; - 不要省略
AUTOEXTEND—— PDB 默认不启用自动扩展,空间耗尽会导致 DML 报 ORA-01653
设置 PDB 默认表空间与临时表空间
DEFAULT TABLESPACE 和 DEFAULT TEMPORARY TABLESPACE 必须在 PDB 内部用 ALTER PLUGGABLE DATABASE 设置,不是 ALTER DATABASE。
- 设默认永久表空间:
ALTER PLUGGABLE DATABASE DEFAULT TABLESPACE users_pdb1; - 建临时表空间(注意是
TEMPORARY TABLESPACE,非TABLESPACE):CREATE TEMPORARY TABLESPACE temp_pdb1 TEMPFILE '/u01/oradata/CDB1/PDB1/temp01.dbf' SIZE 50M; - 设默认临时表空间:
ALTER PLUGGABLE DATABASE DEFAULT TEMPORARY TABLESPACE temp_pdb1; - 验证是否生效:
SELECT PROPERTY_NAME, PROPERTY_VALUE FROM DATABASE_PROPERTIES WHERE PROPERTY_NAME LIKE 'DEFAULT%';
限制 PDB 表空间总容量(防资源越界)
单个 PDB 可通过 STORAGE(MAXSIZE) 控制其能占用的数据文件总大小,防止一个 PDB 吃光共享存储。
- 执行前确保你有
ALTER PLUGGABLE DATABASE权限(SYSDBA或SET CONTAINER权限) - 命令示例:
ALTER PLUGGABLE DATABASE STORAGE (MAXSIZE 10G); - 该限制只约束新分配的数据文件空间,不影响已有文件;若超限,
CREATE TABLESPACE或ALTER DATABASE DATAFILE ... RESIZE会报 ORA-65127 - 注意:此参数在 12.1 中不可用,仅 12.2+ 支持
真正容易被忽略的是:PDB 的表空间元数据只存在于该 PDB 的 SYSTEM 表空间中,CDB 的 DBA_TABLESPACES 视图默认显示的是 CDB$ROOT 的信息。查 PDB 自身表空间,必须先 ALTER SESSION SET CONTAINER = pdb_name; 再查,或者用 CDB_TABLESPACES 并过滤 CON_ID —— 否则你看到的永远不是“那个 PDB”的真实状态。











