oracle - 如何更改现有表以在 Oracle 中创建范围分区

标签 oracle create-table alter-table partition

我现有的表有 10 年的数据(我已经转储了)。

我想在表中的一个日期键列上对现有表进行范围分区。

我看到的大多数例子都是 CREATE TABLE..PARTITION BY RANGE...添加新分区。但我的 table 是现有的 table 。

我想我需要一些 ALTER陈述。

ALTER TABLE TABLE_NAME
PARTITION BY RANGE(CREATED_DATE)
 PARTITION JAN16 VALUES LESS THAN (01-02-2016),
 PARTITION FEB16 VALUES LESS THAN (01-03-2016) AND GREATER THAN(31-01-2016),//OR?
 PARTITION MAR16 VALUES BETWEEN (01-03-2016) AND (31-03-2016),  //OR?

两个问题。。
  • 我需要 Alter 语句来添加分区机制还是需要使用 create 语句?
  • 保持每个分区只有一个月数据的正确语法是什么。
  • 最佳答案

    因为您的表未分区,您有两个选择:

  • 导出数据,删除表,创建新的分区表,导入数据。
  • 使用拆分然后交换分区方法。 https://oracle-base.com/articles/misc/partitioning-an-existing-table-using-exchange-partition

  • 此外,如果您希望每个月都有新的分区,请阅读有关 SET INTERVAL 的信息。例如:
    CREATE TABLE tst
       (col_date DATE)
     PARTITION BY RANGE (col_date) INTERVAL (NUMTOYMINTERVAL(1, 'MONTH'))
    (PARTITION col_date_min VALUES LESS THAN (TO_DATE('2010-01-01', 'YYYY-MM-DD')));
    

    关于oracle - 如何更改现有表以在 Oracle 中创建范围分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35932771/

    相关文章:

    java - Spring batch JDBCPagingItemReader、ThreadPoolTask​​Executor 和 OpenShift 中的多个 pod

    oracle - 如何在 oracle 中创建表时数字数据类型的最大值和最小值

    mysql - 根据字段创建表

    oracle - 使用 select 语句重命名表的 PL/SQL 脚本

    sql - 更改 Oracle 表名

    database - 在 SAS 中连接来自两个 Oracle 数据库的表

    sql - 多列上的 Oracle SQL IN 子句

    c# - 无法在 C# 中解析 Oracle 时间戳

    MySQL错误1215 Cannot add Foreign key constraint - FK in different tables

    oracle - 添加 FK 或 PK 约束会使某些内容无效吗?