Exchange Partition 给出 -Table 或 index is not partitioned. 无效的语法

问题描述 投票:0回答:1

我有两个模式TBCAM和AR_TBCAM。在TBCAM中有一个名为BKP_COST_EVENT的表,我对其进行了分区,并将分区数据移动到AR_TBCAM模式中另一个名为BKP_COST_EVENT_P2016的简单表中。现在数据已经通过这个查询移到了AR_TBCAM模式中。

ALTER TABLE BKP_COST_EVENT EXCHANGE PARTITION P2016 WITH TABLE AR_TBCAM.BKP_COST_EVENT_P2016 INCLUDING INDEXES WITHOUT VALIDATION;

现在我想把分区数据带回原表BKP_COST_EVENT.但当我站在AR_TBCAM上运行这个查询时,我发现,这张表的数据已经被删除了。

ALTER TABLE BKP_COST_EVENT_P2016 EXCHANGE PARTITION P2016 WITH TABLE TBCAM.BKP_COST_EVENT INCLUDING INDEXES WITHOUT VALIDATION;

它给出了这个错误。

Error starting at line : 1 in command -
ALTER TABLE BKP_COST_EVENT_P2016 EXCHANGE PARTITION P2016 WITH TABLE TBCAM.BKP_COST_EVENT INCLUDING INDEXES WITHOUT VALIDATION
Error report -
ORA-14501: object is not partitioned
14501. 00000 -  "object is not partitioned"
*Cause:    Table or index is not partitioned.  Invalid syntax.
*Action:   Retry the command with correct syntax.

有谁能建议我做错了什么?或者如何将数据恢复到我的TBCAM模式表BKP_COST_EVENT中。我没有在原来的BKP_COST_EVENT中删除分区p2016。

oracle oracle12c partitioning partition
1个回答
0
投票

在交换分区语法中,第一张表应该是被分区的表,第二张表应该是未分区的表。所以,你的第一条命令是正确的,但第二条命令是错误的。如果你把数据带回同一个表的分区,请重新运行相同的命令。

ALTER TABLE BKP_COST_EVENT EXCHANGE PARTITION P2016 WITH TABLE AR_TBCAM.BKP_COST_EVENT_P2016 INCLUDING INDEXES WITHOUT VALIDATION;

另外,如果没有要移动的索引,最好不要使用include indexes子句。

© www.soinside.com 2019 - 2024. All rights reserved.