[英]How to copy all of partition from a table to another table
我有一个oracle 11g生产和测试环境。现在,我想将所有可用分区从生产环境复制到测试环境。 是否有可能一次完成它,或者我必须使用alter table语句一个一个地创建分区。
按范围划分
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);
子分区也可用
在Oracle 11中,您可以通过在插入/更新任何数据时自动添加分区的方式来定义分区表。 然后,您不必关心它。
DDL是这样的:
CREATE TABLE T_TABLE
(
LOG_PROC_ID NUMBER NOT NULL,
....
)
TABLESPACE MY_TABLESPACE
PARTITION BY RANGE (LOG_PROC_ID) INTERVAL (10000)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.