日期:2014-05-17  浏览次数:21059 次

alter user 两次改变用户表空间后的状况
新建了一个用户test,目前数据库中有表空间users,sp001

alter user test quota unlimited on users(表空间名1);

之后再次执行

alter user test quota unlimited on sp001(表空间名2);


问题:
1 新建用户test 的默认表空间是SYSTEM么。


2 我两次执行改变用户表空间的命令,最终用户名下的数据是否会被改变,即users中的用户数据(如果有)会如何处理?

------解决方案--------------------
1 默认表空间是谁看要你的新建时怎么指定的(default tablespace 参数指定)。如果没有指定且你数据库版本是10g以后的,那么默认是 users表空间,之前版本是 system表空间;
2 数据当然不会改变,你只是在修改配额(quota)而已

------解决方案--------------------
对于查询该用户的默认表空间
select DEFAULT_TABLESPACE from dba_users where USERNAME = 'TEST';

默认表空间作用是,如果该用户下的对象没有指定存储的表空间,是用默认表空间存储。

对于修改配额,只是说明,可以使用这个表空间多少空间,并不对于你当前的对象有任何影响。
------解决方案--------------------
新建用户的默认表空间为USERS。(如果没有在数据库初始化参数中做设置的话,因为默认的表空间是可以修改的)

一个用记只能有一个默认表空间,但该用户可以对应于多个表空间,执行alter user test quota unlimited on sp001只是让用户在sp001表空间上可以创建对象,并设定配额。

对原来的数据没有任何影响。