当前位置:  数据库>oracle

Oracle 11g维护分区(九)——Truncatinging Partitions

    来源: 互联网  发布时间:2017-06-19

    本文导语: 使用ALTER TABLE ... TRUNCATE PARTITION语句从一个表分区中删除所有数据。截断分区和删除一个分区类似,所不同的是该分区的数据被清空,而不是物理删除。     你不能截断一个索引分区。但是,如果该表定义有本地索引,ALTER TABLE ....

使用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;


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Oracle 12c发布简单介绍及官方下载地址
  • 在linux下安装oracle,如何设置让oracle自动启动!也就是让oracle那个服务自动启动,不是手动的
  • oracle 11g最新版官方下载地址
  • 请问su oracle 和su - oracle有什么不同?
  • Oracle 数据库(oracle Database)Select 多表关联查询方式
  • 虚拟机装Oracle R12与Oracle10g
  • Oracle数据库(Oracle Database)体系结构及基本组成介绍
  • Oracle 数据库开发工具 Oracle SQL Developer
  • 如何设置让Oracle SQL Developer显示的时间包含时分秒
  • Oracle EBS R12 支持 Oracle Database 11g
  • Oracle 10g和Oracle 11g网格技术介绍
  • SCO unix下安装oracle,但没有光盘,请大家推荐一个oracle下载站点(unix版本的)。谢谢!!!!
  • oracle中如何把表中具有相同值列的多行数据合并成一行
  • 请问大家用oracle数据库, 用import oracle.*;下的东西么? 还是用标准库?
  • Oracle 数据库(oracle Database)性能调优技术详解
  • Linux /$ORACLE_HOME $ORACLE_HOME
  • ORACLE日期相关操作
  • Linux系统下Oracle的启动与Oracle监听的启动
  • ORACLE数据库常用字段数据类型介绍
  • 请问在solaris下安装ORACLE,用root用户和用oracle用户安装有什么区别么?
  • Oracle 12c的九大最新技术特性介绍
  • 网间Oracle的连接,远程连接Oracle服务器??


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3