Oracle不在临时表空间中创建索引

时间:2013-05-27 12:31:41

标签: oracle oracle11g database-indexes tablespace

我有一张超过2.000.000.000行的精彩表格。因此,我想在column1上创建一个索引:

CREATE INDEX "SCHEMA"."INDEX_TABLE1" ON "SCHEMA"."TABLE1" ("STR1") 
PCTFREE 10 INITRANS 2 MAXTRANS 255 COMPUTE STATISTICS NOCOMPRESS LOGGING
STORAGE( INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645
PCTINCREASE 0 BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)
TABLESPACE "USERS" ;

如果我执行此操作,我将使用临时表空间,如果其完整(最大20gb),则创建将被中止。

创建索引的错误在哪里?

1 个答案:

答案 0 :(得分:2)

来自Oracle文档:

  

创建大型索引

     

创建超大索引时,请考虑使用以下过程为索引创建分配更大的临时表空间:

     

使用CREATE TABLESPACE或CREATE TEMPORARY TABLESPACE语句创建一个新的临时表空间。

     

使用ALTER USER语句的TEMPORARY TABLESPACE选项将其作为新的临时表空间。

     

使用CREATE INDEX语句创建索引。

     

使用DROP TABLESPACE语句删除此表空间。然后使用ALTER USER语句将临时表空间重置为原始临时表空间。

     

使用此过程可以避免将通常的,通常是共享的临时表空间扩展到可能影响未来性能的不合理大小的问题。