zoukankan      html  css  js  c++  java
  • X 12c中对于表分区维护的增强

    12c中对于表分区维护的增强

    添加多个新分区

    在Oracle 12c R1之前,一次只可能添加一个新分区到一个已存在的分区表。要添加一个以上的新分区,需要对每个新分区都单独执行一次ALTER TABLE ADD PARTITION语句。
    而Oracle 12c只需要使用一条单独的ALTER TABLE ADD PARTITION 命令就可以添加多个新分区,这增加了数据库灵活性。以下示例说明了如何添加多个新分区到已存在的分区表:

    SQL> CREATE TABLE emp_part
    (eno number(8), ename varchar2(40), sal number (6))
    PARTITION BY RANGE (sal)
    (PARTITION p1 VALUES LESS THAN (10000),
    PARTITION p2 VALUES LESS THAN (20000),
    PARTITION p3 VALUES LESS THAN (30000)
    );


    添加两个新分区:

    SQL> ALTER TABLE emp_part ADD
    PARTITION p4 VALUES LESS THAN (35000),
    PARTITION p5 VALUES LESS THAN (40000);


    同样,只要MAXVALUE分区不存在,你就可以添加多个新分区到一个列表和系统分区表。

    删除和截断多个分区/子分区

    作为数据维护的一部分,DBA通常会在一个分区表上进行删除或截断分区的维护任务。在12c R1之前,对于一个已存在的分区表一次只可能删除或截断一个分区。而对于Oracle 12c, 可以用单条ALTER TABLE table_name {DROP|TRUNCATE} PARTITIONS命令来撤销或合并多个分区和子分区。

    下例说明了如何在一个已存在分区表上删除或截断多个分区:

    SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5;
    SQL> ALTER TABLE emp_part TRUNCATE PARTITIONS p4,p5;

    要保持索引更新,使用UPDATE INDEXES或UPDATE GLOBAL INDEXES语句,如下所示:

    SQL> ALTER TABLE emp_part DROP PARTITIONS p4,p5 UPDATE GLOBAL INDEXES;
    SQL> ALTER TABLE emp_part TRUNCATE PARTITIONS p4,p5 UPDATE GLOBAL INDEXES;

    如果你在不使用UPDATE GLOBAL INDEXES 语句的情况下删除或截断一个分区,你可以在USER_INDEXES或USER_IND_PARTITIONS 字典视图下查询ORPHANED_ENTRIES 字段以找出是否有索引包含任何的过期条目。

    将单个分区分割为多个新分区

    在12c中新增强的SPLIT PARTITION 语句可以让你只使用一个单独命令将一个特定分区或子分区分割为多个新分区。下例说明了如何将一个分区分割为多个新分区:

    SQL> CREATE TABLE emp_part
    (eno number(8), ename varchar2(40), sal number (6))
    PARTITION BY RANGE (sal)
    (PARTITION p1 VALUES LESS THAN (10000),
    PARTITION p2 VALUES LESS THAN (20000),
    PARTITION p_max VALUES LESS THAN(MAXVALUE)
    );

    SQL> ALTER TABLE emp_part SPLIT PARTITION p_max INTO
    (PARTITION p3 VALUES LESS THAN (25000),
    PARTITION p4 VALUES LESS THAN (30000), PARTITION p_max);

    将多个分区合并为一个分区

    你可以使用单条ALTER TBALE MERGE PARTITIONS 语句将多个分区合并为一个单独分区:

    SQL> CREATE TABLE emp_part
    (eno number(8), ename varchar2(40), sal number (6))
    PARTITION BY RANGE (sal)
    (PARTITION p1 VALUES LESS THAN (10000),
    PARTITION p2 VALUES LESS THAN (20000),
    PARTITION p3 VALUES LESS THAN (30000),
    PARTITION p4 VALUES LESS THAN (40000),
    PARTITION p5 VALUES LESS THAN (50000),
    PARTITION p_max VALUES LESS THAN(MAXVALUE)
    );


    SQL> ALTER TABLE emp_part MERGE PARTITIONS p3,p4,p5 INTO PARTITION p_merge;


    如果分区范围形成序列,你可以使用如下示例:

    SQL> ALTER TABLE emp_part MERGE PARTITIONS p3 TO p5 INTO PARTITION p_merge;

  • 相关阅读:
    SpringBoot中关于Shiro权限管理的整合使用
    Mybatis批处理(批量查询,更新,插入)
    Windows运行常用命令(win+R)
    IntelliJ IDEA中如何设置同时打开多个文件且分行显示?
    springboot的mybatis的xml相关的配置
    springbootl用thymeleaf整合htm
    resultMap的使用
    重识linux-linux主机上的用户信息传递
    重识linux-linux的新增与删除用户组和切换命令
    重识linux-linux的账号与用户组
  • 原文地址:https://www.cnblogs.com/chendian0/p/13291369.html
Copyright © 2011-2022 走看看