作者:iamlaosong

业务需要创建几个临时表,结果创建时提示表空间EMSDATA不存在。原来这是我创建用户时指定的默认表空间,后来由于项目变化,这个表空间删掉了,所以有此提示。下面是当时创建用户时使用的命令:

create user emssxjk identified by emssxjk default tablespace emsdata temporary tablespace temp;

创建用户时要为用户创建数据表空间和临时表空间,虽然在Oracle数据库中这个不是强制的,但是强烈建议这么做。

碰到这个问题,简单的解决办法是再创建一个同名的表空间,建议用这个办法。

另一个更快的办法是修改用户的默认表空间为USERS:

alter user emssxjk default tablespace users;

用这个办法前,要先查查USERS表空间是否还在以及这个表空间的大小是否要扩充。

创建用户时,如果不指定默认表空间,那么就会根据数据库系统默认参数来指定默认表空间,一般是users这个表空间,可以通过查看视图database_properties看到相关的信息。即:

select a.property_name, a.property_value from database_properties a where a.property_name like '%DEFAULT%';

用下面的命令可以修改数据库系统默认的表空间,就是修改参数DEFAULT_PERMANENT_TABLESPACE对应的值:

alter database default tablespace emsdata;

要改默认临时表空间,可以修改参数DEFAULT_TEMP_TABLESPACE对应的值。修改的语句如下:

alter database default temporary tablespace tempa;

参见:Oracle中临时表空间的清理

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐