分区 | PARTITIONEXCLUDE
有效对象
提取、分发服务和复制。仅限 Oracle。
说明
这些参数与 TABLE 和 TABLEEXCLUDE 参数一起使用。仅当包括表时,才会评估分区规则。
为了保持一致性,这些参数的行为非常类似于它们的 TABLE 和 TABLEEXCLUDE 等效参数。
-
所有名称部分都允许使用通配符。
-
支持
GLOBALS参数EXCLUDEWILDCARDOBJECTSONLY -
容器部分仅在 CDB 环境中以三部分名称有效。
-
未指定目录部分时,
SOURCECATALOG参数将生效。 -
未指定
SOURCECATALOG时,必须指定容器部分。 -
如果指定了容器部分,则它优先于
SOURCECATALOG。
如果任何 PARTITION 或 PARTITIONEXCLUDE 规则的 [container.]schema.table 部分与表匹配,则仅执行其他分区过滤。
分区过滤规则按以下顺序进行计算:
-
如果分区名称与任何
PARTITION参数都不匹配,则会将其排除。 -
如果
PARTITION参数包含排除规则,则除非排除规则由非通配符包含规则包含,并且指定了EXCLUDEWILDCARDOBJECTSONLY,否则会对其进行评估。
如果在 Replicat 中使用 PARTITION 或 EXCLUDEPARTITION,则 PARTITION 参数必须用于 Extract TABLE 参数,才能将分区元数据写入线索文件,以便 Replicat 可以处理它。
注意:如果 PARTITION 或 PARTITIONEXCLUDE 参数的部件数无效,则会出现错误。
语法
PARTITION [<container>.]<schema.table.partition>;
PARTITIONEXCLUDE [<container>.]<schema.table.partition>;
对于非 CDB,必须指定 3 个部分 (schema.table.partition)。
对于 CDB,必须指定 4 个部件 (pdb.schema.table.partition) 或 3 个部件(具有前面的 SOURCECATALOG 参数)。
示例
在下例中,对表 SH.SALES 的分区 P_Q4 执行 DML 操作,将包括该分区,因为表和分区规则都包括该分区。
TABLE
sh.sales;
PARTITION sh.sales*.p_q4;
在下例中,对表 SH.SALES 的分区 P_Q4 执行 DML 操作,所有分区都使用 TABLE/PARTITION 参数包括在提取端。分区 P_Q4 在 Replicat 端使用 MAP/PARTITIONEXCLUDE 参数排除。对分区的所有其他更改都由 Replicat 应用。
TABLE sh.sales;
PARTITION sh.sales.p_q*;
MAP sh.sales, TARGET sh.sales;
PARTITION sh.sales.p_q4;
在以下对表 SH.SALES 的分区 P_Q4 执行 DML 操作的示例中,将排除分区 P_Q4,因为它仅对 SH.SALES 的分区 P_Q3 有效:
TABLE
sh.sales;PARTITION
sh.sales*.p_q3;
以下对 SH.SALES 的分区 P_Q3 执行 DML 操作的示例显示了如何指定多个分区规则。将包括分区,因为它与分区包含规则之一匹配。
TABLE
sh.sales;PARTITION
sh.sales.p_q3;PARTITION
sh.sales.p_q4;
在以下对表 SH.SALES_HISTORY 的分区 P_Q4 执行 DML 操作的示例中,由于显式分区排除规则,将排除分区 P_Q4。
TABLE
sh.sales_history
PARTITION sh.sales*.p_q4;
PARTITIONEXCLUDE sh.sales_history.p_q*;
在以下对表 SH.PRODUCTS 的分区 P_S1 执行 DML 操作的示例中,由于未引用表 SH.PRODUCTS,因此未捕获分区 PART_S1 和完整表 SH.PRODUCTS。
TABLE
sh.sales;PARTITION
sh.products.p_s1;
在下例中,对表 SH.SALES 的分区 P_Q4 执行 DML 操作,将包括分区 PART_S1,因为没有分区规则的表部分与 SH.SALES 匹配。因此,不会评估任何分区规则。
TABLE
sh.sales;
PARTITION sh.products.p_s1;