oracle 清大表

--1: 创建新表
Create table CC_EVENT_RESERVE_NEW tablespace tab_cc as select * from CC_EVENT_RESERVE where rownum < 1;

--close logging
alter table CC_EVENT_RESERVE_NEW nologging;
--set session parallel DML
alter 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 index
CREATE 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_RESERVE
RENAME CC_EVENT_RESERVE TO CC_EVENT_RESERVE_OLD;
--rename table
RENAME 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;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值