在回答这个asssa问题之前我们还要分情况去考虑。
第一种:当创建的表为分区表,临时表或索引组织表的时候
--查看一个用户下有哪些表属于哪个表空间
select * from all_tables where owner = ‘表名大写‘;
问题:有时一些表查不到属于哪个表空间,在 all_tables 中 tablespace_name 字段为空
原因:
dba_tables/all_tables 表中 tablespace_name 列,当某表为分区表,临时表或索引组织表的时候,该列值为空(官方文档解释)。
查看该表是否为分区表或临时表,可以通过 dba_tables 表中的 temporary ,partitioned 字段查看。
--查看用户下哪些表是分区表或临时表
select * from dba_tables where temporary=‘YES‘ or partitioned =‘YES‘ and owner=‘用户名大写‘;
查看是否为索引组织表的步骤:
select dbms_metadata.get_ddl(‘TABLE‘,‘COUNTRIES‘,‘HR‘) from dual;
如果该表的DDL语句中有 ORGANIZATION INDEX 关键字,说明该表为索引组织表。
创建表格时,如果不指定所用的表空间,按照以下顺序使用用户的默认表空间。
1)创建用户时指定的默认表空间。
create user test identified by oracle default tablespace users;
2)创建数据库是指定的默认表空间。可以通过以下语句修改:
alter database default tablespace users;
如果创建用户时,不指定默认的tablespace,
则此用户则会以数据库的默认表空间作为默认表空间。
如果1)和2)都没有设置,才会使用system表空间
评论