Oracle 19c静默创建PDB后查询不到USERS表空间问题咨询
问题成因
- 手动执行
CREATE PLUGGABLE DATABASE语句创建PDB时,默认仅克隆种子容器PDB$SEED的内置表空间:SYSTEM、SYSAUX、UNDOTBS1、TEMP,PDB$SEED本身默认不包含USERS表空间。 - 图形化DBCA创建PDB时,向导默认内置了「创建USERS表空间并设置为PDB默认表空间」的逻辑,而手动SQL创建、未指定额外参数时不会触发该逻辑。
- 你当前使用的PDB创建语句未配置
DEFAULT_TABLESPACE参数,也未显式声明USERS表空间的创建规则,因此最终生成的PDB没有USERS表空间。
注:你当前语句中FILE_NAME_CONVERT的第二个路径'+DTA01 '末尾多了一个空格,虽不影响本次问题,但建议后续修正,避免出现路径异常问题。
解决方案
已创建的TESTPDB补充USERS表空间
- 切换到TESTPDB容器并确保PDB处于打开状态:
sqlplus / as sysdba SQL> alter session set container=TESTPDB; SQL> alter pluggable database open; -- 若PDB已经处于打开状态可跳过该语句
- 基于ASM+OMF配置直接创建USERS表空间:
SQL> create tablespace USERS datafile size 100M autoextend on next 100M maxsize unlimited;
- (可选)将USERS设置为PDB默认表空间,后续新建用户会默认分配到该表空间:
SQL> alter pluggable database default tablespace USERS;
执行完成后再次查询dba_tablespaces即可看到USERS表空间。
后续创建PDB时自动生成USERS表空间
方法1:SQL创建时新增默认表空间参数
CREATE PLUGGABLE DATABASE TESTPDB2 ADMIN USER usradminapp IDENTIFIED BY Redhat123 FILE_NAME_CONVERT = ('+DTA01', '+DTA01') -- 去掉路径末尾多余空格 DEFAULT TABLESPACE USERS DATAFILE SIZE 100M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED;
方法2:DBCA静默创建PDB时指定参数
dbca -silent -createPluggableDatabase \ -sourceDB TEST \ -pdbName TESTPDB3 \ -createPDBFrom DEFAULT \ -adminUserName usradminapp \ -adminPassword Redhat123 \ -defaultTablespace USERS \ -datafileDestination +DTA01
内容的提问来源于stack exchange,提问作者G16
相关产品推荐
相关产品推荐

