Oracle分区解决方案

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 19:16 点击:

一、建立分区的语法如下:

CREATE TABLE table_name

(……)

PARTITION BY RANGE (column_list)

(

PARTITION partition_name VALUES LESS THAN(values_list)       TABLESPACE tablespace_name ,

……

)

              table_name:表名称;

              column_list:分区关键字(表中的字段)列表;

              partition_name:分区名称;

              values_list:与column_list相对应,为分区的上限值;

二、分区维护

a)        扩充分区

A、建立分区表空间:

(例CREATE TABLESPACE BCMSPHIS_0603

    DATAFILE 'F:\Oracle\BCMSPHIS_0603.DBF' SIZE 1024K AUTOEXTEND ON NEXT 102400K MAXSIZE UNLIMITED

    EXTENT MANAGEMENT LOCAL AUTOALLOCATE;

B、建立分区:

(例)ALTER TABLE BCPOnInPDataHisRecSht ADD PARTITION BCPINPPART_0603 VALUES LESS THAN(TO_DATE('2006-10-01','YYYY-MM-DD'))

TABLESPACE BCPINPHIS_0603;

C、修改分区索引表空间指向:

(例)ALTER INDEX XIE1BCPOnInPDataHisRecSht REBUILD PARTITION BCPINPPART_0603

TABLESPACE BCPINPHIS_0603;

ALTER INDEX XIE2BCPOnInPDataHisRecSht REBUILD PARTITION BCPINPPART_0603

TABLESPACE BCPINPHIS_0603;

说明:当然扩充新的分区过程中也可以不创建新的表空间,而使用原来已创建的表空间;创建新的分区表的上限值必须大于已有分区的最大上限值,否则无法创建新的分区表;在给表成功添加分区的同时,如果该表定义了局部索引时,也将为每个局部索引自动创建新的分区,分区索引名称与新创建的分区表名称相同,但分区索引的表空间指向索引的表空间,因此,如果要将分区表和分区索引放在同一表空间下的话就需要修改分区索引的表空间;不可以明确向局部索引中增加分区,只能在向表中增加分区时自动向局部索引中增加新的分区;

执行方式如下:(说明:在执行该SQL前如果您已链接着数据库,请断开数据库重新链接;)

b)        分区数据备份

 

c)        分区删除
分区删除语法:ALTER TABLE DROP PARTITION partition_name

例:ALTER TABLE DROP PARTITION bctinppart_0502

该方式删除表分区和其中的数据,同时该表上局部索引的对应分区也被删除(即使用该索引分区被标记为不可用,它们也被删除);不能明确从局部索引中删除分区,只是在从表中删除分区时删除局部索引分区;倘若要删除一个表分区,但保留其数据,则必须将该分区合并到邻近的分区中。

d)        分区数据恢复

恢复某一个分区的数据:

恢复分区数据时,所恢复分区必须存在,如果恢复分区不存在则必须重新创建该分区,否则恢复数据失败;当创建的恢复分区的上限值大于当前分区最大上限值只,直接创建恢复分区然后修改分区索引的表空间即可;当创建的恢复分区上限值小于当前分区最大上限值时,只能进行分区的分割以创建恢复分区;

e)        分割分区

使用ALTER TABLE 语句的 SPLIT PARTITION子名可以将一个分区分割成两个分区。新分区从旧分区继承属性;旧分区相关的段将被丢弃;该语句也分割该表上每个局部索引中对应的分区(即使它们被标记为不可用);

除了TABLESPACE属性外,旧局部索引分区的物理属性被用于新的索引分区;

例:

--分割分区

alter table bctoninpdatahisrecsht split partition bctinppart _0702

at(to_date('2007-05-01','YYYY-MM-DD'))

into(partition bctinppart_070201 tablespace  bctinppart_070201,partition bctinppart_070202);

--修改分区索引表空间

ALTER INDEX XIE1 bctoninpdatahisrecsht REBUILD PARTITION bctinppart _070201

TABLESPACE bctinppart _070201;

ALTER INDEX XIE2 bctoninpdatahisrecsht REBUILD PARTITION bctinppart _070202

TABLESPACE bctinppart _070202;

三、其它:

     

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • Table函数使用简介
      • Oracle数据库Constraint约束的常用操作及异常处理
      • Bulk Collect性能分析(zz)
      • export/import的使用
      • OCP043第十五讲 Database Security
      • ORACLE10gr2数据导入MySQL方案
      • oracle 让sys用户可以使用isqlplus
      • 在oracle数据库下使用iSQL*Plus DBA访问数据库
      • Oracle行列转换小结
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1