表未在特定表空间中创建 - Oracle

时间:2014-12-02 17:18:02

标签: oracle tablespace

我是Oracle的温和用户,我必须在指定的表空间中创建一些表,如下所示。

create table t_abc tablespace abc_tbspc as select * from abc;
create table t_xyz tablespace abc_tbspc as select * from xyz;

在通过作业运行这些作业(包含大约5个表在一个表空间中创建的文件)之后,我可以看到表t_abc是在abc_tbspc中创建的;但是当我查询t_xyz时,表all_tables被指定为null。不确定为什么第二个表不是在指定的表空间中创建的,即使表空间中有足够的空间。

1 个答案:

答案 0 :(得分:1)

由于以下原因之一,

TABLESPACE_NAME将为null:

  1. 临时临时表使用临时表空间。
  2. 索引组织索引组织表将数据存储在索引中,而不是堆中。
  3. 分区每个分区可以有不同的表空间,整个表不一定有一个表空间。
  4. 外部外部表不会将其数据存储在表空间中。
  5. 您的代码符合上述条件之一;你有没有遗漏一些细节?我运行了下面的查询,以查找TABLESPACE_NAME为空但无法找到任何内容的其他情况。

    select *
    from dba_tables
    where tablespace_name is null
        and (temporary is null or temporary <> 'Y')              -- #1
        and (iot_type is null or iot_type <> 'IOT')              -- #2
        and (partitioned is null or partitioned <> 'YES')        -- #3
        and (owner, table_name) not in                           -- #4
            (select owner, table_name from dba_external_tables)