日期:2014-05-16  浏览次数:20420 次

Oracle用户表和表空间
一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是
一个用来管理数据存储逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多
个数据文件,而一个数据文件只能隶属一个表空间。

  用户属于数据库实例的,在一个实例下不能同名用户。但在一Oracle服务器,可以创建多个实例,只要你的
机器配置够用就可以。因为一个实例启动起码需要100多兆内存的。所以在一Oracle服务器上可以存在多个同名
用户,他们是属于不同数据库实例,他们对应使用的表空间在不同的实例上。

  查询表空间和用户之间的关系:

  SELECT * FROM DBA_SEGMENTS WHERE TABLESPACE_NAME=?

当用户在使用表一段时间之后发现表空间使用错误的操作过程
1.dba用户登录
sqlplus /nolog
conn /as sysdba
2.查看各表空间的使用状态
select tablespace_name,status from dba_tablespaces;
3.切换至一般用户
conn scott/tigger
4.查询用户表和表空间的关系
select table_name,tablespace_name from user_tables;
5.迁移表数据到相应的表空间
alter table emp move tablespace tbs_data;
6.确认用户表和表空间的关系
select table_name,tablespace_name from user_tables;

建议用户创建方式如下:
create user jinfeng
identified by ticket
default tablespace tbs_data
temporary tablespace tbs_temp;
quota 38M on tbs_data
quota 28M on tbs_index
profile tbs_profile;

查看用户所属,默认的临时表空间
select username,default_tablespace ,temporary_tablespace,created ,profile from dba_users
where username ='SCOTT';
查看用户可以在每一个表空间中可用的磁盘空间大上限
select username ,tablespace_name,bytes/1024/1024/1024 MB,
    max_bytes/1024/1024 MAXMB from dba_ts_quotas
	where username='SCOTT';

?