我有两个模式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。
在交换分区语法中,第一张表应该是被分区的表,第二张表应该是未分区的表。所以,你的第一条命令是正确的,但第二条命令是错误的。如果你把数据带回同一个表的分区,请重新运行相同的命令。
ALTER TABLE BKP_COST_EVENT EXCHANGE PARTITION P2016 WITH TABLE AR_TBCAM.BKP_COST_EVENT_P2016 INCLUDING INDEXES WITHOUT VALIDATION;
另外,如果没有要移动的索引,最好不要使用include indexes子句。