如何计算 DDL 进行处理

了解 Oracle GoldenGate 参数中不同标准的处理顺序,以及提取和复制每个 DDL 的处理方式之间的差异。

提取 1。Extract 捕获 DDL 语句。

  1. 提取将备注(如果有)与主语句分开。

  2. 提取搜索 DDL 参数。(此示例假定其存在。)

  3. 提取搜索 IGNOREREPLICATES 参数。如果存在,并且 Replicat 在此系统上生成了此 DDL,则 Extract 将忽略 DDL 语句。(此示例假定此系统上没有复制操作。)

  4. 提取可确定 DDL 语句是否为 RENAME。如果是,则会在内部标记重命名。

  5. 提取将获取基本对象名称,如果存在,将获取派生对象名称。

  6. 如果语句是 RENAME,则 Extract 会将其更改为 ALTER TABLE RENAME。

  7. 提取搜索 DDLOPTIONS REMOVECOMMENTS BEFORE 参数。如果存在,则 Extract 会从 DDL 语句中删除注释,但会存储注释,以防存在使用 INSTR 或 INSTRCOMMENTS 的 DDL INCLUDE 或 DDL EXCLUDE 子句。

  8. 提取确定 DDL 范围:MAPPED、UNMAPPED 或 OTHER:

    • 如果操作和对象类型支持映射,并且基本对象名称和/或派生对象名称(如果 RENAME)位于 TABLE 参数中,则为 MAPPED。

    • 如果操作和对象类型不支持映射,并且基本对象名称和/或派生对象名称(如果 RENAME)不在 TABLE 参数中,则为 UNMAPPED。

    • 否则,该操作将被标识为 OTHER。

  9. 提取会检查 INCLUDE 和 EXCLUDE 子句的 DDL 参数,并评估这些子句中的 DDL 参数标准。所有选项的求值结果必须为 TRUE,以便 INCLUDE 或 EXCLUDE 的求值结果为 TRUE。将出现以下情况:

    • 如果 EXCLUDE 子句的求值结果为 TRUE,则 Extract 将放弃 DDL 语句并计算另一个 DDL 语句。在这种情况下,处理步骤将重新开始。

    • 如果 INCLUDE 子句的求值结果为 TRUE,或者如果 DDL 参数没有任何 INCLUDE 或 EXCLUDE 子句,则 Extract 将包含 DDL 语句,并且处理逻辑将继续。

  10. 提取会搜索 DDLSUBST 参数并评估 INCLUDE 和 EXCLUDE 子句。如果这些子句中的条件加起来为 TRUE,则提取将执行字符串替换。提取会根据参数文件中的每个 DDLSUBST 参数评估 DDL 语句。对于所有真正的 DDLSUBST 规范,Extract 会按 DDLSUBST 参数在文件中列出的顺序执行字符串替换。

  11. 现在已处理 DDLSUBT,Extract 将搜索 REMOVECOMMENTS AFTER 参数。如果存在,则 Extract 会从 DDL 语句中删除注释。

  12. 提取搜索 DDLOPTIONS ADDTRANDATA。如果存在,并且操作为 CREATE TABLE,则 Extract 将在表中发出 ALTER TABLE name ADD SUPPLEMENTAL LOG GROUP 命令。

  13. 提取会将 DDL 语句写入线索。