在创建分区表的时候,可以指定是否启用行移动,就是分区键在更新的时候,数据是否迁移到新的分区,默认的情况下是不启用的。在创建范围分区的时候,可以使用interval来自动创建新分区,分区字段必须是整形或日期。
CREATE TABLE customers_demo (
customer_id number(6),
cust_first_name varchar2(20),
cust_last_name varchar2(20),
credit_limit number(9,2))
PARTITION BY RANGE (credit_limit)
INTERVAL (1000)
(PARTITION p1 VALUES LESS THAN (5001));
SQL> insert into customers_demo values(1,'bai','xiaoyu',100);
已创建 1 行。
SQL> commit;
提交完成。
SQL> insert into customers_demo values(1,'bai','xiaoyu',1200);
已创建 1 行。
SQL> insert into customers_demo values(1,'bai','xiaoyu',5000);
已创建 1 行。
SQL> insert into customers_demo values(1,'bai','xiaoyu',5001);
已创建 1 行。
SQL> insert into customers_demo values(1,'bai','xiaoyu',5002);
已创建 1 行。
SQL> commit;
SQL> select table_name,partition_name,tablespace_name,interval,segment_created from user_tab_partitions where table_name=upper('customers_demo');
TABLE_NAME PARTITION_NAME TABLESPACE_NAME INT SEG
-------------------- -------------------- -------------------- --- ---
CUSTOMERS_DEMO P1 SYSTEM NO YES
CUSTOMERS_DEMO SYS_P21 SYSTEM YES YES
SQL> select * from customers_demo partition(p1);
CUSTOMER_ID CUST_FIRST_NAME CUST_LAST_NAME CREDIT_LIMIT
----------- -------------------- -------------------- ------------
1 bai xiaoyu 100
1 bai xiaoyu 1200
1 bai xiaoyu 5000
SQL> select * from customers_demo partition(SYS_P21);
CUSTOMER_ID CUST_FIRST_NAME CUST_LAST_NAME CREDIT_LIMIT
----------- -------------------- -------------------- ------------
1 bai xiaoyu 5001