结论:partition p3 values less than (maxvalue) 分区表中maxvalue如果用具体参数来代替,则整个表中可插入的最大值不能超过指定的参数。
如指定参数是15,则插入的值只能是小于15.
partition p1 values less than (5) 这里的参数5,意味着插入此分区的数值要小于5,不能大于等于。
SQL> create table test1(ab number) partition by range(ab) (partition p1 values less than (5) tablespace users,partition p2 values less than (10) tablespace users2,partition p3 values less than (maxvalue) tablespace users3);
Table created
SQL> insert into test1 select rownum from dual connect by rownum<13;
12 rows inserted
SQL> create table test5(ab number) partition by range(ab) (partition p1 values less than (4) tablespace users,partition p2 values less than (8) tablespace users2,partition p3 values less than (15) tablespace users3);
Table created
SQL> select * from test5;
AB
----------
SQL> select * from test5 partition(p1);
AB
----------
SQL> insert into test5 select rownum from dual connect by rownum<17;
insert into test5 select rownum from dual connect by rownum<17
ORA-14400: inserted partition key does not map to any partition
SQL> insert into test5 select rownum from dual connect by rownum<16;
insert into test5 select rownum from dual connect by rownum<16
ORA-14400: inserted partition key does not map to any partition
SQL> insert into test5 select rownum from dual connect by rownum<15;
14 rows inserted
SQL> commit;
Commit complete
SQL> select * from test5 partition(p1);
AB
----------
1
2
3
SQL> select * from test5 partition(p2);
AB
----------
4
5
6
7
SQL> select * from test5 partition(p3);
AB
----------
8
9
10
11
12
13
14
SQL> select * from test5 ;
AB
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
14 rows selected
如指定参数是15,则插入的值只能是小于15.
partition p1 values less than (5) 这里的参数5,意味着插入此分区的数值要小于5,不能大于等于。
实验1:使用maxvalue
SQL> create table test1(ab number) partition by range(ab) (partition p1 values less than (5) tablespace users,partition p2 values less than (10) tablespace users2,partition p3 values less than (maxvalue) tablespace users3);
Table created
SQL> insert into test1 select rownum from dual connect by rownum<13;
12 rows inserted
实验二:使用指定参数,插入数据验证整个表中可插入的最大值不能超过指定的参数的结论。
SQL> create table test5(ab number) partition by range(ab) (partition p1 values less than (4) tablespace users,partition p2 values less than (8) tablespace users2,partition p3 values less than (15) tablespace users3);
Table created
SQL> select * from test5;
AB
----------
SQL> select * from test5 partition(p1);
AB
----------
SQL> insert into test5 select rownum from dual connect by rownum<17;
insert into test5 select rownum from dual connect by rownum<17
ORA-14400: inserted partition key does not map to any partition
SQL> insert into test5 select rownum from dual connect by rownum<16;
insert into test5 select rownum from dual connect by rownum<16
ORA-14400: inserted partition key does not map to any partition
SQL> insert into test5 select rownum from dual connect by rownum<15;
14 rows inserted
SQL> commit;
Commit complete
SQL> select * from test5 partition(p1);
AB
----------
1
2
3
SQL> select * from test5 partition(p2);
AB
----------
4
5
6
7
SQL> select * from test5 partition(p3);
AB
----------
8
9
10
11
12
13
14
SQL> select * from test5 ;
AB
----------
1
2
3
4
5
6
7
8
9
10
11
12
13
14
14 rows selected