设为首页 加入收藏

TOP

Oracle 11g维护分区(九)——Truncatinging Partitions
2015-08-31 20:00:12 来源: 作者: 【 】 浏览:49
Tags:Oracle 11g 维护 分区 Truncatinging Partitions

使用ALTER TABLE ... TRUNCATE PARTITION语句从一个表分区中删除所有数据。截断分区和删除一个分区类似,所不同的是该分区的数据被清空,而不是物理删除。


? ? 你不能截断一个索引分区。但是,如果该表定义有本地索引,ALTER TABLE ... TRUNCATE PARTITION语句将会截断每个本地索引中相匹配的分区。除非你指定了UPDATE INDEXES,任何全局索引会被标识为UNUSABLE,必须重建。(对于索引组织表你不能使用UPDATE INDEXES,而是使用UPDATE GLOBAL INDEXES来代替)


截断表分区


? ? 使用ALTER TABLE ... TRUNCATE PARTITION语句从一个表分区移除所有行数据,回收或者不回收空间。在间隔分区表中,截断一个分区并不会移动转换点。在一个引用分区表中,你可以截断分区和子分区。


截断包含数据和全局索引的分区


? ? 如果分区包含数据和全局索引,使用下面其中一种方法来截断表分区。


方法一


? ? 在ALTER TABLE ... TRUNCATE PARTITION语句执行期间,先不处理全局索引。在这个例子中,sales表有一个被重建的全局索引sales_area_ix。


ALTER TABLE sales TRUNCATE PARTITION dec98;
?
ALTER INDEX sales_area_ix REBUILD;
? ? 这个方法最适用于大数据表,其中被截断的分区包含很大比例的数据。


方法二


? ? 在执行ALTER TABLE ... TRUNCATE PARTITION语句前,执行DELETE语句来删除分区的所有数据行。DELETE语句会更新全局索引,并且触发触发器和产生redo和undo日志。


? ? 例如,要删除第一个分区,运行以下语句:


DELETE FROM sales PARTITION (dec98);
?
ALTER TABLE sales TRUNCATE PARTITION dec98;
这个方法最适用于小数据表,或者大数据表中被截断分区包含小比例数据的情形。


方法三


在ALTER TABLE语句中指定UPDATE INDEXES。这个将导致当分区被截断的同时全局索引也被截断。


ALTER TABLE sales TRUNCATE PARTITION dec98
?
? ? UPDATE INDEXES;


截断包含数据和引用完整性约束的分区


? ? 如果一个分区包含数据并有引用完整性约束,那么你不能截断这个分区。如果被移除的分区中不包含被其他数据引用的数据,那么选择两个方法中的任意一个来截断表分区。


方法一


? ? 禁用完整性约束,运行ALTER TABLE ... TRUNCATE PARTITION语句,然后重新启用完整性约束。这个方法最适用于大数据表,其中被截断的分区包含很大比例的数据。如果其他表中仍然存在引用数据,那么你必须移除这些数据来重新启用完整性约束。


方法二


? ? 在你执行ALTER TABLE ... TRUNCATE PARTITION语句前,执行DELETE语句来删除分区的所有数据行。DELETE语句强制引用完整性约束,并且触发触发器、生成redo和undo日志。如果创建外键约束时指定了ON DELETE CASCADE选型,那么引用表的数据将会被删除。


DELETE FROM sales partition (dec94);
?
ALTER TABLE sales TRUNCATE PARTITION dec94;
? ? 这个方法最适用于小数据表,或者大数据表中被截断分区包含小比例数据的情形。


注意:


在你删除分区的所有数据行之前,你可以通过设置NOLOGGING属性来大幅降低日志数量(使用ALTER TABLE ... MODIFY PARTITION ... NOLOGGING)


截断子分区


? ? 你可以使用ALTER TABLE ... TRUNCATE SUBPARTITION语句来从一个复合分区表的子分区中删除所有数据行。相关的本地索引子分区也会被截断。


? ? 下面的语句显式了如果截断一个表中一个子分区的数据。在这个例子中,被删除行所占用的空间将会提供给表空间内其他模式对象使用。


ALTER TABLE diving
?
? TRUNCATE SUBPARTITION us_locations


? ? ? DROP STORAGE;


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇alert日志中的两种ORA错误分析 下一篇Oracle 11g维护分区(八)——Ren..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: