oracle表分区

/*
什么时候使用分区表:
1、表的大小超过2GB。
2、表中包含历史数据,新的数据被增加都新的分区中。
 
 (3).表分区的优缺点
表分区有以下优点:
1、改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度。
2、增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用;
3、维护方便:如果表的某个分区出现故障,需要修复数据,只修复该分区即可;
4、均衡I/O:可以把不同的分区映射到磁盘以平衡I/O,改善整个系统性能
*/
--//查询表上的分区
SELECT * FROM user_tab_partitions WHERE TABLE_NAME = 'SETTLE_OVERALL_934';
--//添加分区
ALTER TABLE SALES ADD PARTITION P3 VALUES LESS THAN(TO_DATE('2003-06-01',
                                                            'YYYY-MM-DD'));
--注意:以上添加的分区界限应该高于最后一个分区界限。
--//删除分区
ALTER TABLE SALES DROP PARTITION P3;


--//分区方式
--一.范围分区:
--例一
CREATE TABLE CUSTOMER(CUSTOMER_ID NUMBER NOT NULL PRIMARY KEY,
                      FIRST_NAME VARCHAR2(30) NOT NULL,
                      LAST_NAME VARCHAR2(30) NOT NULL,
                      PHONE VARCHAR2(15) NOT NULL,
                      EMAIL VARCHAR2(80),
                      STATUS CHAR(1)) PARTITION BY RANGE(CUSTOMER_ID)(PARTITION
                                                                      CUS_PART1
                                                                      VALUES LESS
                                                                      THAN(100000)
                                                                      TABLESPACE
                                                                      CUS_TS01,
                                                                      PARTITION
                                                                      CUS_PART2
                                                                      VALUES LESS
                                                                      THAN(200000)
                                                                      TABLESPACE
                                                                      CUS_TS02)
--例二:按时间划分
CREATE TABLE ORDER_ACTIVITIES(ORDER_ID NUMBER(7) NOT NULL,
                              ORDER_DATE DATE,
                              TOTAL_AMOUNT NUMBER,
                              CUSTOTMER_ID NUMBER(7),
                              PAID CHAR(1)) PARTITION BY RANGE(ORDER_DATE)(PARTITION
                                                                           ORD_ACT_PART01
                                                                           VALUES LESS
                                                                           THAN(TO_DATE('01- MAY -2003',
                                                                                        'DD-MON-YYYY'))
                                                                           TABLESPACEORD_TS01,
                                                                           PARTITION
                                                                           ORD_ACT_PART02
                                                                           VALUES LESS
                                                                           THAN(TO_DATE('01-JUN-2003',
                                                                                        'DD-MON-YYYY'))
                                                                           TABLESPACE
                                                                           ORD_TS02,
                                                                           PARTITION
                                                                           ORD_ACT_PART02
                                                                           VALUES LESS
                                                                           THAN(TO_DATE('01-JUL-2003',
                                                                                        'DD-MON-YYYY'))
                                                                           TABLESPACE
                                                                           ORD_TS03)
--例三:MAXVALUE
CREATE TABLE RangeTable(idd INT PRIMARY KEY, iNAME VARCHAR(10), grade INT) PARTITION BY RANGE(grade)(PARTITION
                                                                                                     part1
                                                                                                     VALUES LESS
                                                                                                     THEN(1000)
                                                                                                     TABLESPACE
                                                                                                     Part1_tb,
                                                                                                     PARTITION
                                                                                                     part2
                                                                                                     VALUES LESS
                                                                                                     THEN(MAXVALUE)
                                                                                                     TABLESPACE
                                                                                                     Part2_tb);


--二.列表分区:
--该分区的特点是某列的值只有几个,基于这样的特点我们可以采用列表分区。
--例一
CREATE TABLE PROBLEM_TICKETS
(
    PROBLEM_ID   NUMBER(7) NOT NULL PRIMARY KEY,
    DESCRIPTION  VARCHAR2(2000),
    CUSTOMER_ID  NUMBER(7) NOT NULL,
    DATE_ENTERED DATE NOT NULL,
    STATUS       VARCHAR2(20)
)
PARTITION BY LIST (STATUS)
(
      PARTITION PROB_ACTIVE   VALUES ('ACTIVE') TABLESPACE PROB_TS01,
      PARTITION PROB_INACTIVE VALUES ('INACTIVE') TABLESPACE PROB_TS02
--例二
CREATE  TABLE  ListTable
(
    id    INT  PRIMARY  KEY ,
    name  VARCHAR (20),
    area  VARCHAR (10)
)
PARTITION  BY  LIST (area)
(
    PARTITION  part1 VALUES ('guangdong','beijing') TABLESPACE  Part1_tb,
    PARTITION  part2 VALUES ('shanghai','nanjing')  TABLESPACE  Part2_tb
);
)
--//合并分区
ALTER TABLE SALES MERGE PARTITIONS P1,P2 INTO PARTITION P2;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值