zoukankan      html  css  js  c++  java
  • Oracle 11g 分区拆分与合并

    时间范围分区拆分
    create table emp (
    id number(6) not null,
    hire_date date not null)
    partition by range(hire_date)
    (partition p_1998 values less than (to_date('1998-12-31','YYYY-MM-DD')),
    partition p_1999 values less than (to_date('1999-12-31','YYYY-MM-DD')),
    partition p_default values less than (maxvalue)
    );

    insert into emp values(10,to_date('1999-5-20','YYYY-MM-DD'));
    insert into emp values(20,to_date('1999-8-10','YYYY-MM-DD'));

    SQL> select count(*) from emp partition(p_1999);
      COUNT(*)
    ----------
             2
    将p_1999分区拆分成两个分区
        
    SQL> ALTER TABLE emp SPLIT PARTITION p_1999
      2     AT (to_date('1999-07-01','YYYY-MM-DD'))
      3     INTO (PARTITION p_1999_01, PARTITION p_1999_02);

    表已更改。

    SQL> select count(*) from emp partition(p_1999_01);

      COUNT(*)
    ----------
             1

    SQL> select count(*) from emp partition(p_1999_02);

      COUNT(*)
    ----------
             1

    将p_default分区拆分成两个分区

    SQL> insert into emp values(30,to_date('2000-5-27','YYYY-MM-DD'));

    已创建 1 行。

    SQL> insert into emp values(40,to_date('2001-10-02','YYYY-MM-DD'));

    已创建 1 行。

    SQL> select count(*) from emp partition(p_default);

      COUNT(*)
    ----------
             2

    SQL> ALTER TABLE emp SPLIT PARTITION p_default
      2         AT (to_date('2000-12-31','YYYY-MM-DD'))
      3         INTO (PARTITION p_2000, PARTITION p_default);

    表已更改。

    SQL> select count(*) from emp partition(p_default);

      COUNT(*)
    ----------
             1

    SQL> select count(*) from emp partition(p_2000);

      COUNT(*)
    ----------
             1

    SQL> select * from emp partition(p_default);

            ID HIRE_DATE
    ---------- -------------------
            40 2001-10-02 00:00:00

    SQL> select * from emp partition(p_2000);

            ID HIRE_DATE
    ---------- -------------------
            30 2000-05-27 00:00:00

    LIST分区拆分
    SQL> create table dept (
      2  id number(6) not null,
      3  area varchar2(15) not null)
      4  partition by list(area)
      5  (
      6     PARTITION asia VALUES ('CHINA', 'THAILAND'),
      7     PARTITION europe VALUES ('GERMANY', 'ITALY', 'SWITZERLAND'),
      8     PARTITION west VALUES ('AMERICA'),
      9     PARTITION east VALUES ('INDIA'),
     10     PARTITION rest VALUES (DEFAULT));

    表已创建。

    SQL> insert into dept values(10,'MEXICO');
    已创建 1 行。

    SQL> insert into dept values(20,'COLOMBIA');
    已创建 1 行。

    SQL> select count(*) from dept partition(rest);

      COUNT(*)
    ----------
             2

    SQL> ALTER TABLE dept SPLIT PARTITION rest
      2     VALUES ('MEXICO', 'COLOMBIA')
      3     INTO (PARTITION south, PARTITION rest);
    表已更改。

    SQL> select count(*) from dept partition(rest);

      COUNT(*)
    ----------
             0

    SQL> select count(*) from dept partition(south);

      COUNT(*)
    ----------
             2

    分区合并

    SQL> SELECT table_name,partition_name  FROM USER_tab_partitions where table_name='EMP';

    TABLE_NAME                     PARTITION_NAME
    ------------------------------ ------------------------------
    EMP                            P_1998
    EMP                            P_1999_01
    EMP                            P_1999_02
    EMP                            P_2000
    EMP                            P_DEFAULT

    SQL> ALTER TABLE emp
      2         MERGE PARTITIONS P_1999_01, P_1999_02 INTO PARTITION P_1999;

    表已更改。

    SQL> SELECT table_name,partition_name  FROM USER_tab_partitions where table_name='EMP';

    TABLE_NAME                     PARTITION_NAME
    ------------------------------ ------------------------------
    EMP                            P_1998
    EMP                            P_1999
    EMP                            P_2000
    EMP                            P_DEFAULT

    SQL> SELECT table_name,partition_name  FROM USER_tab_partitions where table_name='DEPT';

    TABLE_NAME                     PARTITION_NAME
    ------------------------------ ------------------------------
    DEPT                           ASIA
    DEPT                           EUROPE
    DEPT                           WEST
    DEPT                           EAST
    DEPT                           SOUTH
    DEPT                           REST
    已选择6行。

    SQL> ALTER TABLE dept
      2     MERGE PARTITIONS south, rest INTO PARTITION rest;
    表已更改。

    SQL> select count(*) from dept partition(rest);

      COUNT(*)
    ----------
             2

  • 相关阅读:
    2015306 白皎 《网络攻防》Exp5 MSF基础应用
    2015306 白皎 《网络攻防》Exp4 恶意代码分析
    2015306 白皎 《网络攻防》Exp3 免杀原理与实践
    2015306 白皎 《网络攻防》Exp1 进阶
    20155306 白皎 《网络攻防》 Exp2 后门原理与实践
    20155306 白皎 《网络攻防》Exp1 PC平台逆向破解——逆向与Bof基础
    2017-2018-1 20155306 《信息安全系统设计基础》嵌入式C语言———提取设置时分秒
    2017-2018-1 20155306 《信息安全系统设计基础》课程总结
    2017-2018-1 20155306 《信息安全系统设计基础》第十四周学习总结
    2017-2018-1 20155306 《信息安全系统设计基础》第13周学习总结
  • 原文地址:https://www.cnblogs.com/sprinng/p/6921042.html
Copyright © 2011-2022 走看看