--1: 建立新表Create table CC_EVENT_RESERVE_NEW tablespace tab_cc as select * from CC_EVENT_RESERVE where rownum < 1;--close loggingalter table CC_EVENT_RESERVE_NEW nologging;--set session parallel DMLalter session enable parallel dml;--2:將資料匯入新表中INSERT /*+ APPEND PARALLEL( CC_EVENT_RESERVE_NEW,3) */ INTO CC_EVENT_RESERVE_NEW SELECT /*+ PARALLEL(CC_EVENT_RESERVE,3) */ T.* FROM CC_EVENT_RESERVE T; COMMIT;--3:獲得新表中 最大的 EVENT_ID 值 ,這個值 在第9步會用到select max (EVENT_ID) from CC_EVENT_RESERVE_NEW;--4:在新表上建立索引alter table CC_EVENT_RESERVE_NEW add constraint PK_CC_EVENT_RESERVE_NEW primary key (EVENT_ID) using index tablespace IDX_CC;--create indexCREATE INDEX IDX_CC_EVENT_RES_AB_ID_NEW ON CC_EVENT_RESERVE_NEW (ACCT_BOOK_ID ASC) TABLESPACE IDX_CC PARALLEL (DEGREE 3) NOLOGGING;--5:對新表進行表分析EXEC DBMS_STATS.GATHER_TABLE_STATS('USERNAME', 'CC_EVENT_RESERVE_NEW', DEGREE=>3, CASCADE=>TRUE,no_invalidate =>false);--6:開啟新表的LOGGING 功能 ,並且刪除 和原表有關係的 外鍵約束ALTER TABLE CC_EVENT_RESERVE_NEW LOGGING;ALTER TABLE CC_EVENT_RESERVE drop CONSTRAINT FK_CC_EVENT_REF_ACCT_BOOK; ALTER TABLE CC_EVENT_RESERVE drop CONSTRAINT FK_CC_EV_RES_REF_CC_EV_FORMAT; --7:關閉新表索引的並行 開啟 日誌功能ALTER INDEX IDX_CC_EVENT_RES_AB_ID_NEW NOPARALLEL;ALTER INDEX IDX_CC_EVENT_RES_AB_ID_NEW LOGGING;--modify index attr.ALTER INDEX PK_CC_EVENT_RESERVE_NEW NOPARALLEL;ALTER INDEX PK_CC_EVENT_RESERVE_NEW LOGGING;--8:改名,將原表 改成 CC_EVENT_RESERVE_OLD 改成 CC_EVENT_RESERVERENAME CC_EVENT_RESERVE TO CC_EVENT_RESERVE_OLD;--rename tableRENAME CC_EVENT_RESERVE_NEW TO CC_EVENT_RESERVE;--9:可能會存有少量資料在原表中,沒有插入新表中,執行下面語句 補插,其中&EVENT_ID 用 第3步 查出的值替換INSERT /*+ APPEND PARALLEL( CC_EVENT_RESERVE,3) */ INTO CC_EVENT_RESERVE SELECT /*+ PARALLEL(CC_EVENT_RESERVE_OLD ,3) */ T.* FROM CC_EVENT_RESERVE_OLD T WHERE T.EVENT_ID>&EVENT_ID AND NOT EXISTS (SELECT 1 FROM CC_EVENT_RESERVE_OLD T2 WHERE T2.EVENT_ID = T.EVENT_ID) ;COMMIT;--10:重新建立外鍵約束alter table CC_EVENT_RESERVE add constraint FK_CC_EVENT_REF_ACCT_BOOK foreign key (ACCT_BOOK_ID) references ACCT_BOOK (ACCT_BOOK_ID);alter table CC_EVENT_RESERVE add constraint FK_CC_EV_RES_REF_CC_EV_FORMAT foreign key (EVENT_FORMAT_ID) references CC_EVENT_FORMAT (EVENT_FORMAT_ID); --11:刪除 CC_EVENT_RESERVE_OLD 表DROP TABLE CC_EVENT_RESERVE_OLD purge;--12:將索引名改回之前的名字ALTER INDEX IDX_CC_EVENT_RES_AB_ID_NEW RENAME TO IDX_CC_EVENT_RES_AB_ID;ALTER INDEX PK_CC_EVENT_RESERVE_NEW RENAME TO PK_CC_EVENT_RESERVE;--13 約束名字改回之前名字ALTER TABLE CC_EVENT_RESERVE RENAME constraint PK_CC_EVENT_RESERVE_NEW TO PK_CC_EVENT_RESERVE;