zoukankan      html  css  js  c++  java
  • 053-17

    The INV_HISTORY table is created using the command:
    SQL>CREATE TABLE INV_HISTORY (inv_no NUMBER(3), inv_date DATE, inv_amt NUMBER(10,2))
    partition by range (inv_date) interval
    (numtoyminterval(1,'month')) (partition p0
    values less than (to_date('01-01-2005','dd-mm-yyyy')), partition p1 values less than
    (to_date('01-01-2006','dd-mm-yyyy')));
    The following data has been inserted into the INV_HISTORY table :
    INV_NO INV_DATE INV_AMT 1 30-dec-2004 1000 2 30-dec-2005 2000 3 1-feb-2006 3000 4 1-mar-2006
    4000 5 1-apr-2006 5000
    You would like to store the data belonging to the year 2006 in a single partition and issue the command:
    SQL> ALTER TABLE inv_history MERGE PARTITIONS
    FOR(TO_DATE('15-feb-2006','dd-mon-yyyy')), FOR(TO_DATE('15-apr-2006')) INTO PARTITION sys_py;
    What would be the outcome of this command?
    A. It executes successfully, and the transition point is set to '1-apr-2006'.
    B. It executes successfully, and the transition point is set to '15-apr-2006'.
    C. It produces an error because the partitions specified for merging are not adjacent.
    D. It produces an error because the date values specified in the merge do not match the date values

    使用MERGE合并分区时两分区必须是相邻的如果中间有间隔则会失败
    参考 http://www.linuxidc.com/Linux/2013-04/82773.htm
    sys@TEST1107> CREATE TABLE INV_HISTORY (inv_no NUMBER(3), inv_date DATE, inv_amt
    NUMBER(10,2))
    2 partition by range (inv_date) interval (numtoyminterval(1,'month'))
    3 (partition p0 values less than (to_date('01-01-2005','dd-mm-yyyy')),
    4 partition p1 values less than (to_date('01-01-2006','dd-mm-yyyy')));
    Table created.
    sys@TEST1107> insert into INV_HISTORY values (1,'30-dec-2004',1000);
    1 row created.
    sys@TEST1107> insert into INV_HISTORY values (2,'30-dec-2005',2000);
    1 row created.
    sys@TEST1107> insert into INV_HISTORY values (3,'1-feb-2006',3000);
    1 row created.
    sys@TEST1107> insert into INV_HISTORY values (4,'1-mar-2006',4000);
    1 row created.
    sys@TEST1107> insert into INV_HISTORY values (5,'1-apr-2006',5000)
    1 row created.
    sys@TEST1107> select * from INV_HISTORY;
    INV_NO INV_DATE INV_AMT
    ---------- ------------------ ----------

    1 30-DEC-04 1000
    2 30-DEC-05 2000
    3 01-FEB-06 3000
    4 01-MAR-06 4000
    5 01-APR-06 5000


    sys@TEST1107> select * from INV_HISTORY partition(p0);
    INV_NO INV_DATE INV_AMT
    ---------- ------------------ ----------
    1 30-DEC-04 1000
    sys@TEST1107> select * from INV_HISTORY partition(p1);

    INV_NO INV_DATE INV_AMT
    ---------- ------------------ ----------

     

    2 30-DEC-05 2000
    sys@TEST1107> ALTER TABLE inv_history MERGE PARTITIONS
    2 FOR(TO_DATE('15-feb-2006','dd-mon-yyyy')), FOR(TO_DATE('15-apr-2006')) INTO PARTITION
    sys_py;
    ALTER TABLE inv_history MERGE PARTITIONS
    *
    ERROR at line 1:
    ORA-14274: partitions being merged are not adjacent
    INTERVAL Clause
    Use this clause to establish interval partitioning for the table. Interval partitions are partitions
    based on a numeric range or datetime interval. They extend range partitioning by instructing the
    database to create partitions of the specified range or interval automatically when data inserted
    into the table exceeds all of the range partitions.





  • 相关阅读:
    迁移模型问题,提示admin已存在
    centos 部署的时候安装不上Mariadb,缺少依赖文件
    collections
    List里面添加子list,子list clear之后竟然会影响主List里面的内容
    Jackson用法详解
    Ouath2.0在SpringCloud下验证获取授权码
    zookeeper原理之Leader选举的getView 的解析流程和ZkServer服务启动的逻辑
    zookeeper原理之Leader选举源码分析
    Spring Integration sftp 专栏详解
    SpringMVC常用注解标签详解
  • 原文地址:https://www.cnblogs.com/Babylon/p/8193297.html
Copyright © 2011-2022 走看看