Oracle数据库管理、开发与实践 教学课件 作者 杨永健 刘尚毅 第12章 表分区与索引分区.ppt

Oracle数据库管理、开发与实践 教学课件 作者 杨永健 刘尚毅 第12章 表分区与索引分区.ppt

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
可以从范围分区或复合分区中删除分区。但是散列分区和复合分区的散列子分区,只能通过合并来达到删除的目的。 1.删除一个表分区 可以使用ALTER TABLE…DROP PARTITION语句删除范围分区和复合分区。删除分区时,该分区的数据也被删除。如果不希望删除数据,则必须采用合并分区的方法,下面来看一个例子。 【例12-16】 把ware_retail_part分区表中的par_04分区删除,代码及运行结果如下。 SQL alter table ware_retail_part drop partition par_04; ?表已更改。 2.删除有数据和全局索引的表分区 如果分区表中包含了数据,并且在表中定义了一个或者多个全局索引,可以使用ALTER TABLE…DROP PARTITION语句删除表分区,这样可以保留全局索引,但是索引会被标识为不可用(UNUSABLE),因而需要重建索引,下面来看一个例子。 【例12-17】 删除ware_retail_part分区表中的par_04分区,然后重建索引ware_index,代码及运行结果如下。 SQL alter table ware_retail_part drop partition par_04; ?表已更改 ?SQL alter index ware_index rebuild; ?索引已更改。 在上面的例子中,如果ware_index是范围分区的全局索引,那么就需要重建所有索引的分区,如下面的示例代码: alter index ware_index rebuild index_01; alter index ware_index rebuild index_02; alter index ware_index rebuild index_03; 12.4.3 删除分区 3.使用DELETE和ALTER TABLE…DROP PARTITION语句。 在执行ALTER TABLE…DROP PARTITION语句前首先执行DELETE语句来删除分区的所有数据行,然后执行ALTER TABLE…DROP PARTITION语句,但是执行DELETE语句时需要更新全局索引,下面来看一个例子。 【例12-18】 首先删除ware_retail_part分区表中第四季度的数据,然后再删除第四季度数据对应的par_04分区,代码及运行结果如下。 SQL delete from ware_retail_part where retail_date = to_date(2011-10-01,yyyy-mm-dd); ? 已删除513行。 ? SQL alter table ware_retail_part drop partition par_04; ? 表已更改 4.删除具有完整性约束的分区 如果分区的表具有完整性约束,则可以采用以下两种办法。 (1)首先禁止完整性约束,然后执行ALTER TABLE…DROP PARTITION,最后激活约束,下面来看一个例子。 【例12-19】 首先禁用books_1表的主键约束BOOK_PK,然后删除books_1表的分区part_01,最后激活books_1表的主键约束BOOK_PK,代码及运行结果如下。 SQL alter table books_1 disable constraints BOOK_PK; ? 表已更改。 ? SQL alter table books_1 drop partition part_01; ? 表已更改 ? SQL alter table books_1 enable constraints BOOK_PK; ? 表已更改。 (2)首先执行DELETE语句删除分区中的行,然后用ALTER TABLE…DROP PARTITION语句删除分区,下面来看一个例子。 【例12-20】 首先删除books_1表中part_01分区中的所有记录,然后再删除part_01分区,代码及运行结果如下。 SQL delete from books_1 where bookno 1000; ? 已删除12行。 ? SQL alter table books_1 drop partition part_01; ? 表已更改 用户可以使用MERGE PARTITION语句将相邻的范围分区合并在一起变为一个新的分区:该分区继承原来两个分区的边界;原来的两个分区与相应的索引一起被删除掉;如果被合并的分区非空,则该分区被标识为UNSABLE;不能对HASH分区表执行MERGE PARTITION语句。 并入范围分区是将两个以上的分区合并到一个存在的分区中,合并后一

您可能关注的文档

文档评论(0)

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档