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 的问题的主要内容,如果未能解决你的问题,请参考以下文章
oracle中比较alter table t move 和alter table t shrink space
如何用oracle里面的alter table语句去添加一个列约束
sql [ALTER TABLE]要(1)添加,删除或修改列,或(2)在现有表中添加和删除各种约束。 #Syntax #Alter_table