繁体   English   中英

如何将所有分区从一个表复制到另一个表

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM