首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ORA-00959:表空间不存在,但我可以在select中看到它

ORA-00959:表空间不存在,但我可以在select中看到它
EN

Database Administration用户
提问于 2017-01-02 14:32:08
回答 1查看 70.4K关注 0票数 5

因此,我以SYSDBA的身份连接到Oracle,并试图运行以下命令:

代码语言:javascript
复制
 create user C##demo identified by demopassword;

以用户创建结束。

然后我跑:

代码语言:javascript
复制
alter user C##demo default tablespace PAVEL_DATA temporary tablespace PAVEL_TEMP;

以错误结尾:

ORA-00959:表空间'PAVEL_DATA‘不存在

但是如果我运行这个命令:

代码语言:javascript
复制
SELECT TABLESPACE_NAME, STATUS, CONTENTS
FROM USER_TABLESPACES;

我可以看到表空间:

代码语言:javascript
复制
  TABLESPACE_NAME          STATUS    CONTENTS
------------------------------ --------- ---------
SYSTEM                 ONLINE    PERMANENT
SYSAUX                 ONLINE    PERMANENT
TEMP                   ONLINE    TEMPORARY
USERS                  ONLINE    PERMANENT
UNDOTBS2               ONLINE    UNDO
PAVEL_DATA             ONLINE    PERMANENT
PAVEL_TEMP             ONLINE    TEMPORARY

那么,为什么创建错误表空间时不存在错误表空间呢?

编辑

根据评论,这就是我在运行select tablespace_name, con_id from cdb_tablespaces时所看到的:

代码语言:javascript
复制
TABLESPACE_NAME            CON_ID
------------------------------ ----------
PAVEL_DATA              1
PAVEL_TEMP              1
SYSTEM                  4
SYSAUX                  4
TEMP                    4
USERS                   4

TABLESPACE_NAME            CON_ID
------------------------------ ----------
SYSTEM                  3
SYSAUX                  3
TEMP                    3
USERS                   3
EXAMPLE                 3    
PAVEL_TEMP              3
PAVEL_DATA              3

因此,这两个表空间都是在DB$ROOT (id=1)和可插拔datavase (id>2)中创建的。但是,当连接到可插拔数据库时,我仍然会收到同样的错误。一定是什么蠢事,但我现在瞎了.

EN

回答 1

Database Administration用户

回答已采纳

发布于 2017-01-03 08:35:41

在创建公共用户时,使用以下子句指定的任何默认表空间、临时表空间或配置文件必须存在于属于CDB的所有容器中:默认tablespace临时tablespace配额配置文件

更多

根据您已更新的输出,PAVEL_DATA表空间似乎不存在于容器号4中。

此外,如果当前关闭的PDBS上不存在指定的默认/临时表空间,则CREATE USER或带有DEFAULT TABLESPACEDEFAULT TEMPORARY TABLESPACE子句的ALTER USER命令可能会成功。但是,当尝试使用刚刚创建或更改的普通用户打开或连接这些新打开的PDB时,可能会出现错误。

Demonstration:

代码语言:javascript
复制
SQL> create user c##_sales_hr identified by password default tablespace tbs_sales;
create user c##_sales_hr identified by password default tablespace tbs_sales
*
ERROR at line 1:
ORA-65048: error encountered when processing the current DDL statement in
pluggable database ORAPDB1
ORA-00959: tablespace 'TBS_SALES' does not exist


SQL> select tablespace_name, con_id from cdb_tablespaces;

TABLESPACE_NAME                CON_ID
------------------------------ ----------
SYSTEM                         1
SYSAUX                         1
UNDOTBS1                       1
TEMP                           1
USERS                          1
TBS_SALES                      1
SYSTEM                         4
SYSAUX                         4
TEMP                           4
ORAPDB1_TBS1                   4
MGMT_ECM_DEPOT_TS              4

11 rows selected.

SQL> alter session set container=orapdb1;

Session altered.

SQL> create tablespace tbs_sales datafile '+DATA' size 50M;

Tablespace created.

SQL> conn / as sysdba
Connected.
SQL> create user c##_sales_hr identified by password default tablespace tbs_sales;

User created.
票数 5
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/159745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档