关于ORACLE删除分区

您所在的位置:网站首页 oracle删除所有的表 关于ORACLE删除分区

关于ORACLE删除分区

2023-08-04 03:11| 来源: 网络整理| 查看: 265

业务需求:定期删除表中三个月之前的数据

说明:由于表采取一个月一个分区的设计,所以删除三个月之前的数据也就是删除三个月之前的分区。但需要注意的是删除分区后全局索引会失效,而本地local索引不会受到影响。

删除分区的语法:

ALTER TABLE TABLE_NAME TRUNCATE PARTITION (PARTITION_NAME);

假如表名是:T_GOODS_RECORD_DETAIL

需要删除的分区分别是:PAR_G001,PAR_G002。

则删除分区的SQL:

ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION PAR_G001;--可以不带括号 ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION (PAR_G002);

一般表的主键ID是全局索引,所以在删除分区后需要维护全局索引,SQL如下:

ALTER INDEX 索引名 REBUILD ONLINE; --假如索引是IDX_GOODS_ID,则sql语句为: ALTER INDEX IDX_GOODS_ID REBUILD ONLINE;

也可以在删除分区的时候就维护索引,SQL是:

ALTER TABLE T_GOODS_RECORD_DETAIL TRUNCATE PARTITION (PAR_G001) UPDATE GLOBAL INDEX;  但是在程序中rebuild索引的时候一定在所有分区都删除完之后再操作。因为如果表的数据量太大的话rebuild索引会非常耗时!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3