使用 Oracle Data Pump 进行每表自动实例化

Oracle GoldenGate 使用 Oracle Data Pump 实用程序为 Oracle AI Database 创建方案、表和用户的新实例。它的工作原理是将数据和元数据卸载到一组称为转储文件集的操作系统文件中。

此方法使用 Oracle Data Pump 实用程序来建立目标数据。要运行此方法,请启动 Extract、数据泵并在复制停止的 SCN 上进行复制。将跳过副本中包括的事务处理,以避免因违反完整性而发生冲突。从流程开始点开始,Oracle GoldenGate 将维护数据同步。

此方法不需要初始加载 Oracle GoldenGate 进程。

您可以使用 Oracle 数据泵自动实例化 Oracle AI Database 的每个表 CSN 筛选,从而避免将所有表位于同一 SCN 中。

在源数据库上

  1. 使用 ADD TRANDATA 和 ADD SCHEMATRANDATA。ADD TRANDATA/SCHEMATRANDATA.PREPARECSN 自动在源中准备表,以便 Oracle 数据泵导出的转储文件包括实例化 CSN。复制使用 Oracle 数据泵(在导入时)设置的按表实例化 CSN 以筛选出线索记录。

    使用 INFO TRANDATA 确保您的表已准备好进行实例化,并在执行时完成。下面是报表文件的示例:

    2025-09-29 15:30:00 INFO OGG-10154 Schema level PREPARECSN set to mode NOWAIT on schema
          hr
  2. 停止目标数据库上的复制。

  3. 使用正确的 TABLE 语句启动提取。

由于之前已准备表,因此不需要 EXPORT datapump 选项 FLASHBACK_SCN。

在目标数据库 1 上。使用 Oracle 数据泵导入导出的表,该泵使用实例化 SCN 以及指定的表数据填充系统表和视图。

  1. 使用以下方法之一启动复制:

    在 Replicat 参数文件中设置 DBOPTIONS ENABLE_INSTANTIATION_FILTERING 参数以启用表级实例化筛选。

    复制处理了实例化 SCN 以外的所有事务处理时,您可以删除此参数。

    对于所有其他复制,请在 Replicat 参数文件中设置 DBOPTIONS source_dbase_name global_name 参数,其中 global_name 是线索来自的 Oracle 源数据库的全局名称。注:当源没有 DOMAIN 时,请不要为下游数据库指定 DOMAIN。

Replicat queries the instantiation SCN on any new mapping and filter records accordingly. For example, see the following report file output:

<pre class="copy"><code>2025-06-29 17:12:39 INFO OGG-10155 Oracle GoldenGate Delivery for Oracle, r1.prm: Instantiation CSN filtering is enabled on table HR.EMPLOYEES at CSN 1,851,797.</code></pre>

您可以使用其他方法进行实例化,而不是使用数据泵来导出和导入表。其中一种方法是使用 create table 作为 select 命令或 RMAN。步骤是:1。使用以下命令将 create table 与 at SCN of 参数结合使用:

`SET_INSTANTIATION_CSN SCN for object from global_name`

For example:

<pre class="copy"><code>SET_INSTANTIATION_CSN 1 FOR u1.t1 FROM DBS1.REGRESS.RDBMS.DEV.US.ORACLE.COM</code></pre>
  1. 如果以后要删除实例化 CSN 的手动设置,可以使用以下命令:

    CLEAR_INSTANTIATION_CSN for *object* from *global_name*