我有一个oracle 11g生产和测试环境。现在我想将所有可用的分区从生产复制到测试环境。是可以一次性完成它还是我必须使用alter table语句逐个创建分区。
答案 0 :(得分:2)
按范围划分
CREATE TABLE sales_range
(salesman_id NUMBER(5),
sales_date DATE)
PARTITION BY RANGE(sales_date)
(
PARTITION sales_jan2000 VALUES LESS THAN(TO_DATE('02/01/2000','DD/MM/YYYY')),
PARTITION sales_feb2000 VALUES LESS THAN(TO_DATE('03/01/2000','DD/MM/YYYY')),
PARTITION sales_apr2000 VALUES LESS THAN(TO_DATE('05/01/2000','DD/MM/YYYY'))
);
按列表分区
CREATE TABLE sales_list
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
sales_state VARCHAR2(20),
PARTITION BY LIST(sales_state)
(
PARTITION sales_west VALUES('California', 'Hawaii'),
PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida')
);
按哈希分区(如果我们不确定有多少数据映射到给定范围内)
CREATE TABLE sales_hash
(salesman_id NUMBER(5),
salesman_name VARCHAR2(30),
)
PARTITION BY HASH(salesman_id)
PARTITIONS 2
STORE IN (ts1, ts2);
也可以使用子分区
答案 1 :(得分:1)
I Oracle 11您可以通过在插入/更新任何数据时自动添加分区的方式定义分区表。那你就不用关心了。
DDL是这样的:
CREATE TABLE T_TABLE
(
LOG_PROC_ID NUMBER NOT NULL,
....
)
TABLESPACE MY_TABLESPACE
PARTITION BY RANGE (LOG_PROC_ID) INTERVAL (10000)