Oracle PL/SQL:SELECT 来自分区 TABLE 的两个相邻分区的不同 FIELD1、FIELD2
Oracle PL/SQL: SELECT DISTINCT FIELD1, FIELD2 FROM TWO ADIACENT PARTITIONS OF A PARTITIONED TABLE
我有一个分区 table,其中有一个字段 MY_DATE,它总是且只是从 1999 年到 2017 年每个月的第一天。
例如,它包含具有 01/01/2015、01/02/2015、..... 01/12/2015 的记录,例如 01/01/1999、01/02/1999 和等等。
字段MY_DATE
为分区字段
我想以最有效的方式将两个相邻分区(月 M 和月 M-1)的字段 2 和字段 3 的不同值复制到另一个 table,以便找到整个日期的不同对 (field2, field3)。
Exchange 分区仅在目标 table 未分区时才有效,但在复制第二个相邻分区的数据时,我收到错误
"ORA-14099: all rows in table do not qualify for specified partition".
我正在使用语句:
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 是一个巨大的 table,大约有 5 亿条记录。
目标是找到两个相邻分区的不同对 (field2, field3) 值。
我的做法是:复制分区M的数据,复制分区M-1的数据,然后SELECT DISTINCT FIELD2, FIELD3 from DESTINATION_TABLE.
非常感谢您考虑我的请求。
我要复制,...
请注意,EXCHANGE PARTITION 不执行复制,但 EXCHANGE。 IE。大table和临时table的分区内容调换了。
如果你对两个不同的分区和相同的温度执行两次 table 你会得到你收到的错误。
要复制(提取数据而不改变大table)你可以使用
create table tab1 as
select * from bigtable partition (partition_name1)
create table tab2 as
select * from bigtable partition (partition_name2)
您的来源 table 未更改,在您准备好后简单地删除两个临时文件 table。两个分区只需要额外 space。
也许您甚至可以在不复制数据的情况下执行查询
with tmp as (
select * from bigtable partition (partition_name1)
union all
select * from bigtable partition (partition_name2)
)
select ....
from tmp;
祝你好运!
我有一个分区 table,其中有一个字段 MY_DATE,它总是且只是从 1999 年到 2017 年每个月的第一天。
例如,它包含具有 01/01/2015、01/02/2015、..... 01/12/2015 的记录,例如 01/01/1999、01/02/1999 和等等。
字段MY_DATE
为分区字段
我想以最有效的方式将两个相邻分区(月 M 和月 M-1)的字段 2 和字段 3 的不同值复制到另一个 table,以便找到整个日期的不同对 (field2, field3)。
Exchange 分区仅在目标 table 未分区时才有效,但在复制第二个相邻分区的数据时,我收到错误
"ORA-14099: all rows in table do not qualify for specified partition".
我正在使用语句:
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 是一个巨大的 table,大约有 5 亿条记录。
目标是找到两个相邻分区的不同对 (field2, field3) 值。
我的做法是:复制分区M的数据,复制分区M-1的数据,然后SELECT DISTINCT FIELD2, FIELD3 from DESTINATION_TABLE.
非常感谢您考虑我的请求。
我要复制,...
请注意,EXCHANGE PARTITION 不执行复制,但 EXCHANGE。 IE。大table和临时table的分区内容调换了。 如果你对两个不同的分区和相同的温度执行两次 table 你会得到你收到的错误。
要复制(提取数据而不改变大table)你可以使用
create table tab1 as
select * from bigtable partition (partition_name1)
create table tab2 as
select * from bigtable partition (partition_name2)
您的来源 table 未更改,在您准备好后简单地删除两个临时文件 table。两个分区只需要额外 space。
也许您甚至可以在不复制数据的情况下执行查询
with tmp as (
select * from bigtable partition (partition_name1)
union all
select * from bigtable partition (partition_name2)
)
select ....
from tmp;
祝你好运!