我有一个带有字段MY_DATE的分区表,从1999年到2017年,每个月的第一天都是这样。
例如,它包含有01/01/2015、01/02/2015、.的记录。01/12/2015,如01/01/1999、01/02/1999等。
字段MY_DATE是分区字段。
我想以最有效的方式将两个相邻分区(月份M和月M-1)的field2和field3的不同值复制到另一个表中,以便找到整个日期的不同耦合(field2,field3)。
只有当目标表未被分区时,Exchange分区才能工作,但是当复制第二个相邻分区的数据时,我会收到错误,
"ORA-14099:表中的所有行都不符合指定分区的条件“。
我用的是这样的说法:
ALTER TABLE MY_USER.MY_PARTITIONED_TABLE EXCHANGE PARTITION PART_P201502 WITH TABLE MY_USER.MY_TABLE当然,MY_PARTITIONED_TABLE和MY_TABLE有相同的字段,但是第一个字段是按照上面所述进行分区的。
请假设MY_PARTITIONED_TABLE是一个拥有大约5亿条记录的大表。
目标是找到两个相邻分区的不同的(field2,field3)值对。
我的方法是:复制分区M的数据,复制分区M1的数据,然后从FIELD2中选择DISTINCT FIELD3。
非常感谢你考虑我的要求。
发布于 2015-11-16 16:54:18
我想复制一下..。
请注意,EXCHANGE分区不执行复制,而是执行EXCHANGE。即切换大表和临时表的分区内容。如果对两个不同的分区和相同的临时表执行两次此操作,则会得到所收到的错误。
要复制(解压缩数据而不更改大表),可以使用
create table tab1 as
select * from bigtable partition (partition_name1)
create table tab2 as
select * from bigtable partition (partition_name2)在准备就绪之后,源表保持不变--简单地删除两个临时表。您只需要为这两个分区增加空间。
也许您可以在不复制数据的情况下执行查询。
with tmp as (
select * from bigtable partition (partition_name1)
union all
select * from bigtable partition (partition_name2)
)
select ....
from tmp;祝好运!
https://stackoverflow.com/questions/33739735
复制相似问题