准备要处理的表
必须在 TimesTen 的 Oracle GoldenGate 环境中解决以下表属性。
删除 ON DELETE CASCADE 约束条件
如果 Oracle TimesTen 中的目标表具有指定 ON DELETE CASCADE 子句的外键,并且作为该外键目标的表也是 Oracle GoldenGate 复制的目标,则您必须从外键定义中删除 ON DELETE CASCADE 子句以避免错误。
请考虑以下示例,其中源表为 emp_src 和 salary_src,目标表为 emp_targ 和 salary_targ。
-
对
emp_src发出删除。 -
它将删除级联到
salary_src。 -
Oracle GoldenGate 会将两项删除操作发送到目标。
-
父删除首先到达,并应用于
emp_targ。 -
父删除将删除级联到
salary_targ。 -
salary_src中的级联删除将应用于salary_targ。 -
无法找到该行,因为已在步骤 5 中将其删除。
Oracle TimesTen 不支持禁用外键约束条件或删除级联约束条件。要删除 ON DELETE CASCADE,必须删除表并在不使用 ON DELETE CASCADE 子句的情况下重新创建表,或者可以使用 ALTER TABLE 删除外键约束条件,并在不使用 ON DELETE CASCADE 子句的情况下重新创建外键约束条件。
确保表的行唯一性
Oracle GoldenGate 在源表和目标表上需要某种形式的唯一行标识符,以查找用于复制更新和删除的正确目标行。
除非在 TABLE 或 MAP 语句中使用 KEYCOLS 子句,否则 Oracle GoldenGate 将按以下优先级顺序选择要使用的行标识符:1。主键
-
按字母数字顺序排列的第一个不包含时间戳或非实体化计算列的唯一键。
-
如果上述关键字类型均不存在(即使表中可能定义了其他类型的关键字),则 Oracle GoldenGate 将构造所有列的伪关键字数据库允许在唯一密钥中使用,但不包括 Oracle GoldenGate 在密钥中不支持的密钥或从 Oracle GoldenGate 配置中排除的密钥。注:如果表中存在其他不可使用的关键字,或者表中根本没有关键字,则 Oracle GoldenGate 会将相应的消息记录到报表文件中。从所有列构建密钥会妨碍 Oracle GoldenGate 在源系统上的性能。在目标上,此键会导致复制使用较大且效率较低的
WHERE子句。
- 如果表没有相应的键,或者您希望未使用现有键,则可以定义替代键(如果表具有始终包含唯一值的列)。您可以通过在 Extract
TABLE参数和 ReplicatMAP参数中包含 KEYCOLS 子句来定义此替代关键字。指定的键将覆盖 Oracle GoldenGate 找到的任何现有主键或唯一键。请参阅《 Parameters and Functions Reference for Oracle GoldenGate 》中的 TABLE | MAP 。