一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空是一个用来管理数据存储逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。
用户属于数据库实例的,在一个实例下不能同名用户。但在一oracle服务器,可以创建多个实例,只要你的机器配置够用就可以。因为一个实例启动起码需要100多兆内存的。所以在一oracle服务器上可以存在多个同名用户,他们是属于不同数据库实例,他们对应使用的表空间在不同的实例上。
查询表空间和用户之间的关系:
SELECT FROM DBA_SEGMENTS WHERE TABLESPACE_NAME=?
FAQ:
在Oracle中建立了一个用户UB,它的默认表空间是TSA,在数据库用了一段时间后,发现原来搞错了,把默认表空间改成TSB。现在想问几个问题:
1.数据究竟放在那个表空间上了?
更改以前的放在tsa里面,后来的放在tsb里面
2.我想把数据都放回表空间TSB上可以吗?
将表b存放在tsa里面 --alter table b move tablespace tsb;
3.怎样才知道数据表放在哪个表空间上?
select table_name,TABLESPACE_NAME from user_tables;
4.我用Exp 来导出UB这个用户,能把它所有数据都导出吗?
可以。