因此,我以SYSDBA的身份连接到Oracle,并试图运行以下命令:
create user C##demo identified by demopassword;以用户创建结束。
然后我跑:
alter user C##demo default tablespace PAVEL_DATA temporary tablespace PAVEL_TEMP;以错误结尾:
ORA-00959:表空间'PAVEL_DATA‘不存在
但是如果我运行这个命令:
SELECT TABLESPACE_NAME, STATUS, CONTENTS
FROM USER_TABLESPACES;我可以看到表空间:
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时所看到的:
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)中创建的。但是,当连接到可插拔数据库时,我仍然会收到同样的错误。一定是什么蠢事,但我现在瞎了.
发布于 2017-01-03 08:35:41
在创建公共用户时,使用以下子句指定的任何默认表空间、临时表空间或配置文件必须存在于属于CDB的所有容器中:默认tablespace临时tablespace配额配置文件
根据您已更新的输出,PAVEL_DATA表空间似乎不存在于容器号4中。
此外,如果当前关闭的PDBS上不存在指定的默认/临时表空间,则CREATE USER或带有DEFAULT TABLESPACE或DEFAULT TEMPORARY TABLESPACE子句的ALTER USER命令可能会成功。但是,当尝试使用刚刚创建或更改的普通用户打开或连接这些新打开的PDB时,可能会出现错误。
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.https://dba.stackexchange.com/questions/159745
复制相似问题