如何将普通表更改为IOT?

时间:2013-02-28 11:59:39

标签: sql oracle11g

实际上我创建了一个表

CREATE TABLE "ATR"."S_JOURNEY"
  (
    "TIMETABLE_ID"            NUMBER(*,0) primary key,
    "STATION_ID"              NUMBER(*,0),
    "SCHEDULE_ARRIVAL_TIME"   VARCHAR2(8 BYTE),
    "SCHEDULE_DEPARTURE_TIME" VARCHAR2(8 BYTE),
    "OTHER_DETAILS"           VARCHAR2(25 BYTE)
  );

现在我只想创建一个与上面相同的索引组织表。我可以使用

来获取
CREATE TABLE "ATR"."iot_S_JOURNEY"   organization index as select * from ATR.s_journey;

无论如何都使用alter命令将普通表更改为IOT。

提前致谢

1 个答案:

答案 0 :(得分:3)

无法使用alter table将堆表转换为IOT。

使用CATS语句执行的操作可能是最简单的方法。另外两种常用的方法是:

  • 导出表数据,将结构重新创建为IOT,然后导入数据
  • 使用在线表格重新定义。 Redefining Tables Online文档明确声明RDBMS_REDEFINITION可让您:

      

    将普通表(有组织的堆)的组织更改为索引组织表,或者反过来。

第二个选项更复杂,但据我所知,这是在线完成的唯一方法。确保首先在非关键系统上进行测试,包括生成并发修改,如果这是在您实际执行时会发生的情况。