You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Oracle XE 18c创建用户遇ORA-00959:表空间不存在问题排查

ORA-00959错误排查:Oracle XE 18c CDB/PDB环境下创建用户失败

问题场景

在Oracle XE 18c中复用修改后的Oracle XE 11g脚本创建数据库时,CDB和PDB中的表空间、角色均创建成功,但执行CREATE USER命令时抛出ORA-00959: tablespace 'MY_TABLESPACE' does not exist错误。

复现步骤

SQLPLUS /NOLOG
SQL> CONNECT SYS/<SYS pwd>@XE AS SYSDBA
connected.
SQL> SHOW CON_NAME
     CDB$ROOT

SQL> CREATE TABLESPACE "MY_TABLESPACE" SIZE 50M AUTOEXTEND ON
                       DATA FILE 'C:\OracleApp\ORADATA\XE\MyFile.DBF';

SQL> ALTER SESSION SET CONTAINER = XEPDB1;

SQL> CREATE TABLESPACE "MY_TABLESPACE"
                       LOGGING
                       DATA FILE 'C:\OracleApp\ORADATA\XE\XEPDB1\MyFile.DBF'
                       SIZE 100M EXTENT MANAGEMENT LOCAL
                       SEGMENT SPACE MANAGEMENT AUTO;

/* 两个表空间及对应数据文件均已正确创建,文件位于对应目录:\ORADATA\XE 和 \ORADATA\XE\XEPDB1。
/* 创建两个角色:MY_ADMIN_ROLE 和 MY_NORMAL_ROLE,并授予权限等。   */

SQL> CREATE USER "MY_ADMIN_USER"
                       PROFILE "DEFAULT"
                       IDENTIFIED BY "<my admin pwd>"
                       DEFAULT TABLESPACE "MY_TABLESPACE"
                       TEMPORARY TABLESPACE "TEMP"
                       QUOTA UNLIMITED ON "MY_TABLESPACE"
                       ACCOUNT UNLOCK;

ORA-00959: tablespace 'MY_TABLESPACE' does not exist.

错误原因

核心问题是不必要的双引号使用导致对象名大小写敏感:

  • Oracle默认会将未加双引号的对象名自动转换为大写存储和查询,无需手动添加双引号。
  • 你在创建表空间、用户时使用了双引号包裹名称,强制Oracle将对象名按原字符串(此处为大写)存储,但后续查询时若出现隐性的大小写匹配问题(如字符集差异、命令解析时的大小写转换异常),就会导致Oracle无法找到对应的表空间。
  • 另外需确认执行CREATE USER时,当前会话确实处于XEPDB1容器中,若意外切回CDB$ROOT,也会因找不到PDB中的表空间报错。

解决步骤

  1. 确认当前容器:执行以下命令确保会话在XEPDB1中:

    SHOW CON_NAME;
    

    若输出不是XEPDB1,执行ALTER SESSION SET CONTAINER = XEPDB1;切换。

  2. 移除所有不必要的双引号:修改所有对象创建命令,去掉双引号(因为你的对象名均为大写,符合Oracle默认规则):

    • 创建CDB表空间:
      CREATE TABLESPACE MY_TABLESPACE SIZE 50M AUTOEXTEND ON
                        DATA FILE 'C:\OracleApp\ORADATA\XE\MyFile.DBF';
      
    • 创建PDB表空间:
      CREATE TABLESPACE MY_TABLESPACE LOGGING
                        DATA FILE 'C:\OracleApp\ORADATA\XE\XEPDB1\MyFile.DBF'
                        SIZE 100M EXTENT MANAGEMENT LOCAL
                        SEGMENT SPACE MANAGEMENT AUTO;
      
    • 创建用户:
      CREATE USER MY_ADMIN_USER
                        PROFILE DEFAULT
                        IDENTIFIED BY "<my admin pwd>"
                        DEFAULT TABLESPACE MY_TABLESPACE
                        TEMPORARY TABLESPACE TEMP
                        QUOTA UNLIMITED ON MY_TABLESPACE
                        ACCOUNT UNLOCK;
      
  3. 验证表空间存在:在XEPDB1容器中执行查询,确认表空间存在:

    SELECT TABLESPACE_NAME FROM DBA_TABLESPACES WHERE TABLESPACE_NAME = 'MY_TABLESPACE';
    

    若返回结果,则表空间已正确创建,可继续执行用户创建命令。


内容的提问来源于stack exchange,提问作者Plomong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 20:32:40