表包含连个字段,一个是用户ID,另外一个是日期,我现在需要对该表进行list-range分区,即以id作为第一级分区,再以日期字段做range分区,代码如下: 
create table test 
      (USER_ID NUMBER(10), TXN_DATE DATE) 
      PARTITION BY LIST(USER_ID) 
        SUBPARTITION BY RANGE(TXN_DATE) 
      (PARTITION po VALUES VALUES (1)) 
          SUBPARTITION po1 VALUES LESS THAN (TO_DATE('2009-7-13','yyyy-mm-dd'))      
      ); 
执行时总出错,错误提示是ERROR at line 5: 
                                    ORA-00906: 缺失左括号 
我现在有两个问题: 
(1)如何在oracle11g下如何创建list-range分区? 
(2)如何通过代码在已经按照list-range分区的表上动态的添加分区? 

解决方案 »

  1.   

    不好意思,拷贝错了,应该拷贝的代码是
    create table test 
          (USER_ID NUMBER(10), TXN_DATE DATE) 
          PARTITION BY LIST(USER_ID) 
            SUBPARTITION BY RANGE(TXN_DATE) 
          (PARTITION po VALUES VALUES (1)
              SUBPARTITION po1 VALUES LESS THAN (TO_DATE('2009-7-13','yyyy-mm-dd'))      
          ); 
      

  2.   

    create table test 
          (USER_ID NUMBER(10), TXN_DATE DATE) 
          PARTITION BY LIST(USER_ID) 
            SUBPARTITION BY RANGE(TXN_DATE) 
          (PARTITION po VALUES (1) 
             (SUBPARTITION po1 VALUES LESS THAN (TO_DATE('2009-7-13','yyyy-mm-dd')) )     
          ); 
    --原来的语句多了个VALUES和少了个括号。要在11G动态创建分区,RANGE—LIST是可建的。LIST—RANGE估计建不了