alter table big_table modify partition 的问题

Posted

技术标签:

【中文标题】alter table big_table modify partition 的问题【英文标题】:Problem with alter table big_table modify partition 【发布时间】:2021-12-21 10:41:39 【问题描述】:

我创建表:

create table big_table(
  bt_id    number primary key,
  bt_date  date,
  bt_value varchar2(20)
)

然后我要对这张表进行分区(代码缩写):

alter table big_table modify
  partition by range (bt_date)
  interval(numtoyminterval(1, 'MONTH'))
  subpartition by hash (bt_id)
  (
  partition nn_st_p1 values less than (to_date(' 2019-05-01 00:00:00', 'syyyy-mm-dd hh24:mi:ss'))
  subpartitions 4
  store in (ipr_tbl),
  )online

错误信息:

17:20:39  line 1: ORA-14006: invalid partition name

我不明白我的分区名称有什么问题?

Oracle Database 12c 企业版版本 12.1.0.2.0 - 64 位生产

【问题讨论】:

你的问题解决了吗 您的示例在19.0 中适用于我(store in (ipr_tbl), 中的语法错误除外,我认为这是剪切和粘贴问题)。在评论中,您提到表已经有错误的分区 - 这不是您在问题中显示的内容。你能发布当前表的确切 DDL 吗? 【参考方案1】:

试试这样的


CREATE TABLE big_table
  (bt_id       NUMBER PRIMARY KEY 
  , bt_date       DATE
  , bt_value   VARCHAR2(20)
  )
 PARTITION BY RANGE (bt_date) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 SUBPARTITION BY HASH (bt_id) SUBPARTITIONS 4
 (PARTITION nn_st_p1 VALUES LESS THAN (TO_DATE('01-MAY-2019','dd-MON-yyyy'))
  )
PARALLEL;

【讨论】:

我做不到。我的表带有很多数据、索引、触发器等。而且它已经有错误的分区。我需要修改现有表的现有分区。复制一个表,重新分区,删除旧表,然后重命名重复,由于某些原因,它对我来说也不是一个好的选择。 这个(drop + create)不是对“如何做一个alter table”问题的回答

以上是关于alter table big_table modify partition 的问题的主要内容,如果未能解决你的问题,请参考以下文章

RDD 的 .first() 方法是不是洗牌?

为啥 select Top 子句会导致长时间的成本

oracle中比较alter table t move 和alter table t shrink space

如何用oracle里面的alter table语句去添加一个列约束

sql [ALTER TABLE]要(1)添加,删除或修改列,或(2)在现有表中添加和删除各种约束。 #Syntax #Alter_table

我如何知道数据库触发器是 DROP_TABLE 还是 ALTER_TABLE?