提取的 MAP
有效对象
提取
说明
还可以使用提取参数文件中的 MAP 更改 Oracle GoldenGate 为表存储的事务处理的名称。
例如,请考虑捕获表 scott.emp。对于第一个用例,您可以捕获它以将所有更改应用于具有相同结构的名为 scott.emp 的其他表,但您还希望捕获具有不同列集的 scott.emp 并将其复制到名为 scott.emp_old 的表。要执行此操作,您需要一个类似于以下内容的提取参数文件:
TABLE scott.emp;
MAP scott.emp,
cols(emp_no, employee_name),
target scott.emp_old;
在 "Replicat"(复制)中,可以执行以下操作:
MAP *.*, target *.*;
从 scott.emp 更改将进入 scott.emp,scott.emp_old 的线索数据将进入 scott.emp_old。
当提取以经典捕获模式运行时,并且您需要使用此参数的 ALTID 组件将对象 ID 映射到对象名称时,使用 MAP 参数进行提取。如果提取从数据库生成的 Oracle 事务处理日志中捕获,则 ALTID 指定正确的对象 ID。该日志不是提取所连接到的数据库。不允许提取直接连接到生产(来源)数据库以捕获生产事务处理时,需要此配置。
当 Extract 无法直接连接到源数据库时,它会连接到实时备用数据库或其他传真数据库,但会读取从源数据库发送的事务处理日志。通过查询备用数据库的目录,Extract 可以获取将事务处理数据扩展到有效 SQL 语句所需的元数据,但不能使用此查询中的对象 ID。表的本地对象 ID 与源数据库(因此在事务处理日志中)中该表的对象 ID 不同。必须使用带有 ALTID 的 MAP 语句将每个表名手动映射到源对象 ID。
将 MAP 与 ALTID 一起使用
-
为要捕获的每个表创建一个带
ALTID的MAP语句。包含ALTID的MAP参数不允许使用通配符表名。 -
要为同一表(或表)指定其他处理,例如数据筛选或处理,还必须为这些表中的每个表创建一个
TABLE语句。如果适用,可以使用通配符指定包含一个TABLE语句的多个表。 -
像往常一样,在 Replicat 参数文件中使用常规 Replicat
MAP语句。对于 Extract,MAP不会替代复制,复制是将源表映射到目标表所必需的MAP。 -
使用
ALTID时不支持DDL捕获和复制。
默认值
无
语法
MAP *[<container>.]<schema>.*<table>, ALTID <object_ID> [, <object_ID>]
[<container>.]<schema.table>
源表的全限定名称。
<object_ID>
表中存在于生产(源)数据库中的对象 ID。
如果对表进行了分区,则可以列出要复制的分区的对象 ID,每个分区用逗号分隔。
示例
示例 1
此示例映射未分区的表或仅映射分区表的一个分区。
MAP QASOURCE.T2, ALTID 75740;
示例 2
此示例映射已分区表的分区。
MAP QASOURCE.T_P1, ALTID 75257,75258;