REGISTER EXTRACT

此命令适用于 Oracle AI Database 和 PostgreSQL。

Oracle AI 数据库

此命令注册主提取组以启用集成捕获模式,并指定从多租户容器数据库集成提取的选项

要从数据库注销提取组,请使用 UNREGISTER EXTRACT 命令。

语法:

REGISTER EXTRACT group-name
          ( , DATABASE
          ( [ CONTAINER container-list |
              ADD   CONTAINER container-list |
              DROP  CONTAINER container-list ]
            [ SCN   scn   ]
            [ SHARE ( AUTOMATIC | group-name | NONE ) ]
            [ [NO]OPTIMIZED ]
          ) )

Container-list 是 PDB 名称的逗号分隔列表,例如 (pdbeast, pdbwest);或者是使用通配符的 PDB 名称,例如 (pdb* or pdb?);或两者,例如 (cdbnorth, pdb*)。支持的通配符为 ? 和 *。

OPTIMIZED 选项可以促进提取快速启动。默认值为 NOOPTIMIZED。OPTIMIZED 选项仅影响上游非多租户配置。

DATABASE [
CONTAINER (container[, ...]) |
ADD CONTAINER (container[, ...]) |
DROP CONTAINER (container[, ...])
]

对 Oracle 有效。

如果没有选项,DATABASE 将使提取组从非 CDB 数据库进行集成捕获。在该模式下,提取进程与数据库日志挖掘服务器集成,以逻辑更改记录 (logical change record, LCR) 的形式接收更改数据。提取进程不读取重做日志。提取进程执行捕获处理、转换和其他要求。DML 筛选由日志挖掘服务器执行。

Before using REGISTER EXTRACT with DATABASE, use the DBLOGIN USERIDALIAS command for all Extracts with the privileges granted using the dbms_goldengate_auth.grant_admin_privilege procedure. 如果您具有下游配置,则还必须发出 MININGDBLOGIN 命令。如果您正在注册的源数据库是 CDB 数据库并且提取过程将提取数据,则必须使用 CONTAINER=>'ALL 参数调用 grant_admin_privilege。

使用 REGISTER EXTRACT 后,将 ADD EXTRACT 与 INTEGRATED TRANLOG 选项配合使用,以创建同名的提取组。

CONTAINER (container[, ...])

将注册应用于多租户容器数据库 (Container DataBase, CDB) 的一个或多个可插入数据库(容器)。在括号内指定一个或多个可插入数据库(以逗号分隔的多个数据库),例如:CONTAINER (pdbeast, pdbwest)。如果您列出多个可插入数据库,则它们必须存在于数据库中。您还可以使用通配符 * 和 ? 指定可插入数据库。例如 CONTAINER (pdb*)。

ADD CONTAINER (container[, ...])

将指定的可插入数据库添加到现有提取捕获配置。在括号内指定一个或多个可插入数据库,或使用通配符 * 和 ? 指定逗号分隔列表。例如:ADD CONTAINER (pdbeast, pdbwest)。在发出带有此选项的 REGISTER EXTRACT 之前,停止提取组。

对于 Oracle,不支持在现有提取的特定 SCN 处添加容器。

DROP CONTAINER (container[, ...])

从现有提取捕获配置中删除指定的可插入数据库。在括号内指定一个或多个可插入数据库,或使用通配符 * 和 ? 指定逗号分隔列表。例如 DROP CONTAINER (pdbeast, pdbwest)。

运行 drop container 选项后注册提取不会完全发生,并且提取过程会从删除的可插入数据库读取大于提取检查点 SCN 的已提交事务处理。然后,提取进程完全删除容器,接着关闭并显示一条消息。

在运行带有此选项的 REGISTER EXTRACT 之前,停止提取组。

SCN system_change_number

注册提取,使其从过去的某个特定系统更改编号 (System Change Number, SCN) 处开始捕获。如果没有此选项,从发出 REGISTER EXTRACT 时开始捕获。指定的 SCN 必须与日志文件中字典构建操作的开始 SCN 相对应。您可以发出以下查询来从 CDB 级别的字典转储中查找所有有效的 SCN 值:

SELECT first_change#
   FROM v$archived_log
   WHERE dictionary_begin = 'YES' AND
      standby_dest = 'NO' AND
      name IS NOT NULL AND
      status = 'A';

但是,在注册每个 PDB 提取时,此查询不起作用。要确定特定 PDB 的可用字典转储的开始 SCN,可以执行以下步骤:

  1. 连接到 PDB。

  2. 运行 show con_id 命令以获取 PDB 标识符。

  3. 运行以下查询以按降序列出所有可用的字典转储:

    SELECT DATE_OF_BUILD, START_SCN FROM dba_logmnr_dictionary_buildlog WHERE CONTAINER_ID = PDB identifier ORDER BY DATE_OF_BUILD DESC;

单独使用时,该 SCN 值是日志文件中字典构建操作的开始 SCN。

与 SHARE AUTOMATIC 或 SHARE extract_name 结合使用时,指定的 SCN 是捕获会话的 start_scn 并具有以下限制:

{SHARE [ AUTOMATIC | extract | NONE]}

对 Oracle 有效。

注册提取,返回具有指定 SCN 的现有 LogMiner 数据字典构建,以便创建克隆。这样,可以通过利用现有字典构建更快地创建提取。

不能对 CDB 使用 SHARE。

支持以下命令:

REGISTER EXTRACT extract database SCN #### SHARE AUTOMATIC
REGISTER EXTRACT extract database SCN #### SHARE extract
REGISTER EXTRACT extract database SHARE NONE
REGISTER EXTRACT extract database SCN #### SHARE NONE

或者

REGISTER EXTRACT extract database SHARE NONE
REGISTER EXTRACT extract database SCN #### SHARE NONE

但下游配置中不支持以下命令:

REGISTER EXTRACT extract DATABASE SHARE AUTOMATIC
REGISTER EXTRACT extract DATABASE SHARE extract

AUTOMATIC

从现有的最近捕获克隆。如果找不到合适的克隆候选项,则创建新构建。

extract

从指定提取的关联捕获会话进行克隆。如果这无法实现,则会出现错误,注册不会完成。

NONE

不克隆或创建新构建;这是默认值。

在下游配置中,为提取注册时,SHARE 子句必须与 SCN 子句结合使用。

PostgreSQL

此命令在连接的源数据库中创建复制插槽,并确保在移动或删除复制插槽之前 PostgreSQL 数据库不会清除事务处理日志。必须在执行 ADD EXTRACT 命令之前运行 REGISTER EXTRACT 命令。

在注册提取之前,必须使用 DBLOGIN USERIDALIAS 连接到 PostgreSQL 数据库实例。

您还可以从 Oracle GoldenGate 管理服务 Web 界面注册提取。有关详细信息,请参阅 Oracle GoldenGate 微服务文档中的 Register Extract for PostgreSQL 。

您还可以使用 TRANLOGOPTIONS STREAMINGOPTIONS 参数为 PostgreSQL 设置流选项,以便在复制启动期间提供参数。有关详细信息,请参见 TRANLOGOPTIONS 。

注:从 Oracle GoldenGate 21c (21.3) 发行版开始,不必输入 database_name。

语法:

REGISTER EXTRACT group_name

或者

REGISTER EXTRACT group_name PGPLUGINTYPE pgoutput;

注:要显式注册 pgoutput 插件,需要在命令中指定 pgoutput 插件类型。如果未选择 pgoutput 插件,则会设置默认插件类型 test_decoding。

或者

REGISTER EXTRACT group_name MIGRATE replication_slot_name

或者

REGISTER EXTRACT group_name with DATABASE database_name

或者

group_name

要注册的提取组的名称。请不要使用通配符。

MIGRATE replication_slot_name

对 PostgreSQL 有效。

如果 Oracle GoldenGate 升级(其中提取进程的安装目录不同),则需要具有 MIGRATE 选项的 REGISTER EXTRACT。

replication_slot_name 是数据库中存在的任何现有复制插槽的名称。此命令通过复制原始插槽 replication_slot_name 中存在的 LSN 信息来创建新的复制插槽。复制的复制插槽从与原始插槽相同的 LSN 开始。

注:原始复制插槽必须存在于要从其创建新插槽的同一数据库中。

PGPLUGINTYPE test_decoding | pgoutput

对 PostgreSQL 有效。

已添加此选项以允许为 PostgreSQL 选择逻辑解码插件。可以选择 test_decoding 或 pgoutput。默认情况下,CDC Extract 使用 test_decoding 插件类型注册。因此,如果不将 pgplugintype 指定为 pgoutput,则将自动使用 test_decoding。

示例


REGISTER EXTRACT exte LOGRETENTION

REGISTER EXTRACT exte DATABASE

REGISTER EXTRACT exte DATABASE CONTAINER (pdbeast, pdbwest, pdbsouth)

REGISTER EXTRACT exte DATABASE ADD CONTAINER (pdbnorth)

REGISTER EXTRACT exte DATABASE DROP CONTAINER (pdbnorth)

REGISTER EXTRACT exte DATABASE SCN 136589

字典构建的开始 SCN 为 136589。


REGISTER EXTRACT exte DATABASE SCN 67000 SHARE extw

有效开始 SCN,在此示例中为 67000;不必是当前 SCN。


REGISTER EXTRACT exte DATABASE CONTAINER (pdbeast, pdbeast, pdbsouth) SCN 136589

对于 PostgreSQL,插件类型指定为 PGOUTOPUT:

REGISTER EXTRACT exte PGPLUGINTYPE pgoutput WITH DATABASE hr