源和目标之间的协调表属性

如果您的数据库不支持 Oracle GoldenGate DDL 功能,请按照此过程更改源表的属性。属性更改包括添加或更改列或分区。它将指导您如何在不产生复制延迟的情况下对目标表进行相同的更改。

注:对于 Oracle 和 MySQL 数据库,您可以启用 Oracle GoldenGate 的 DDL 支持功能,以将 DDL 更改传播到目标,而不是使用此过程。

  1. 在源系统和目标系统上,创建一个称为标记器表的表,该表可用于生成表示事务处理日志中停止点的标记。只需创建两个简单列:一个作为主键,另一个作为常规列。例如:
CREATE TABLE marker
(
id int NOT NULL,
column varchar(25) NOT NULL,

PRIMARY KEY (id)
);
  1. 在源系统和目标系统上的标记表中插入一行。
INSERT INTO marker VALUES (1, 1);
COMMIT;
  1. 在源系统上,运行管理客户机。

  2. 打开提取参数文件进行编辑。

    注意:请勿使用 VIEW PARAMS 或 EDIT PARAMS 命令查看或编辑采用本地操作系统字符集以外的现有参数值文件(例如,使用 CHARSET 选项指定了其他字符集的文件)。如果是这种情况,请从命令行界面外部查看参数文件;否则,内容可能会损坏。

  3. 在 TABLE 语句中将标记表添加到提取参数文件中。

TABLE marker;
  1. 保存并关闭参数文件。

  2. 将标记表添加到数据泵的 TABLE 语句(如果正在使用标记表)。

  3. 停止提取和数据泵进程,然后立即重新启动它们以防止捕获滞后。

STOP EXTRACT *group*
START EXTRACT *group*
  1. 在目标系统上,运行管理客户机。

  2. 打开 Replicat 参数文件进行编辑。

    注意:请勿使用 VIEW PARAMS 或 EDIT PARAMS 命令查看或编辑采用本地操作系统字符集以外的现有参数值文件(例如,使用 CHARSET 选项指定了其他字符集的文件)。如果是这种情况,请从管理客户机外部查看参数文件;否则,内容可能会损坏。

  3. 在 MAP 语句中将标记表添加到 Replicat 参数文件中,并使用所示的 EVENTACTIONS 参数停止对标记表执行 Replicat 和忽略操作。

MAP marker, TARGET marker, EVENTACTIONS (STOP, IGNORE);
  1. 保存并关闭参数文件。

  2. 停止复制进程,然后立即重新启动。

STOP REPLICAT *group*
START REPLICAT *group*
  1. 准备好更改源表和目标表的表属性时,停止它们上的所有用户活动。

  2. 在源系统上,对标记表执行 UPDATE 操作,作为事务处理中的唯一操作。

UPDATE marker
SET column=2,
WHERE id=1;
COMMIT;
  1. 在目标系统上,发出以下命令,直到显示 Replicat 因 EVENTACTIONS 规则而停止。
STATUS REPLICAT *group*
  1. 对源表和目标表执行 DDL,但尚不允许用户进行活动。

  2. 开始复制。

START REPLICAT *group*
  1. 允许在源表和目标表上执行用户活动。