使用流处理处理程序将数据从 PostgresSQL 复制到 Snowflake

了解如何使用 OCI GoldenGate 使用流处理处理程序将数据从 PostgreSQL 复制到 Snowflake。

开始之前

要成功完成此快速入门,您必须具有以下各项:

使用 PostgreSQL 设置 OCI 数据库

  1. 创建 OCI Database with PostgreSQL

    1. 在 OCI Database with PostgreSQL 中:

      1. 选择 Configurations

      2. 使用现有配置,例如 PostgreSQL.VM.Standard.E5.Flex-14-0_51

      3. 选择 Copy configuration(复制配置),重命名它,在用户变量(读/写)下添加 wal_level,然后将其设置为 'logical'。

      4. 选择创建

      5. 有关更多信息,请参见 Copying a Configuration

    2. 创建数据库系统时,使用 wal_level 设置为 true 的配置。有关更多信息,请参见 Creating a Database System

  2. 使用 PostgreSQL 连接到 OCI Database。有关详细信息,请参阅连接到数据库

  3. 使用 PostgreSQL 在 OCI Database 中为 GoldenGate 创建数据库和用户:

    1. Database

      1. 创建数据库 ociggll;

      2. \c ociggll;

      3. 创建方案 src_ociggll;

      4. 加载示例脚本

    2. User

      1. 使用口令 <password> 创建用户 ggadmin

      2. 向 ggadmin 授予 DATABASE ociggll 上的所有权限;

      3. GRANT SELECT ON ALL TABLE IN SCHEMA src_ociggll TO ggadmin;

设置 Snowflake 数据库

  1. 创建 Snowflake 数据库

  2. 用户必须创建公钥和私钥对才能在 Snowflake 中进行验证

  3. 在 Snowflake 中为 GoldenGate 创建专门的用户,并具有适当的权限

  4. 将公钥添加到 Snowflake 用户,例如:ALTER USER example_user SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';

  5. 使用示例方案创建目标表。

任务 1:创建 OCI GoldenGate 资源

此快速入门示例需要源和目标的部署和连接。

  1. 需要 GoldenGate for PostgreSQL 26ai。

  2. 为源 PostgreSQL 数据库创建 PostgreSQL 部署

  3. 为目标 Snowflake 数据库创建大数据部署

  4. 创建具有以下值的 PostgreSQL 连接

    1. 对于类型,从下拉列表中选择 OCI Database with PostgreSQL

    2. 对于数据库名称,输入 ociggll

    3. 对于用户名,输入 ggadmin

    4. 对于 Password ,输入您的口令。

    5. 对于 Security Protocol ,从下拉列表中选择 TLS ,然后选择 Prefer

  5. 创建具有以下值的 Snowflake 连接

    1. 对于连接 URL ,输入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL

      注:请确保将 <account_identifier><warehouse name> 替换为相应的值。

    2. 对于 Authentication Type(验证类型),从下拉列表中选择 Key pair authentication(密钥对验证)

      注:对于 Snowflake Streaming,密钥对验证是唯一支持的验证类型。

    3. 用户名中,输入名称。

    4. 上载之前创建的私钥

    5. 在 "Private key password"(私有密钥密码)字段中输入私有密钥密码短语。

  6. 为目标大数据部署创建与 GoldenGate 的连接,然后将此连接分配给源 PostgreSQL 部署

  7. 将源 PostgreSQL 连接分配给 PostgreSQL 部署

  8. 将 Snowflake 连接分配给目标大数据部署

任务 2:启用补充日志记录

要启用补充日志记录,请执行以下操作:

  1. 启动 PostgreSQL GoldenGate 部署控制台:

    1. 从“Deployments(部署)”页面中,选择 PostgreSQL 部署以查看其详细信息。

    2. 在 PostgreSQL 部署详细信息页上,选择启动控制台

    3. 在部署控制台登录页面上,输入任务 1 步骤 1 中提供的 GoldenGate 管理身份证明。

      注:如果在创建部署时未选择 IAM 作为身份证明存储,则需要登录。

  2. 在部署控制台中,在左侧导航中选择 DB Connections(DB 连接),然后选择源 PostgreSQL 数据库,然后选择 Trandata

  3. 在“TRANDATA”页的“TRANDATA 信息”旁边,选择添加 TRANDATA (加号图标)。

  4. 在 "Trandata" 面板中,对于方案名称,输入 src_ociggll,然后选择提交

    注:使用搜索字段搜索 src_ociggll 并验证是否已添加表。

任务 3:创建提取

  1. 添加更改数据捕获提取:

    1. 在左侧导航中,选择提取

    2. 在“提取”页上,选择添加提取(加号图标),然后按如下方式填写字段:

      • 在“提取信息”页面上:

        1. 对于提取类型,选择更改数据捕获提取

        2. 对于流程名称,输入提取的名称,例如 ECDC

        3. 选择 Next

      • 在“提取选项”页面上:

        1. 对于源身份证明,请从下拉列表中选择 Oracle GoldenGate

        2. Alias(别名)下拉列表中选择源 PostgreSQL 数据库。

        3. 对于“提取线索名称”,输入两个字符的线索名称,例如 C1

        4. 选择 Next

      • 在“提取参数”页上,将 MAP *.*, TARGET *.*; 替换为以下内容:

        TABLE SRC_OCIGGLL.*;
    3. 选择创建并运行

  2. 添加初始加载提取:

    1. 在“提取”页上,选择添加提取,然后按如下方式填写“添加提取”表单:

      • 在“提取信息”页面上:

        1. 对于“提取”类型,选择初始加载提取

        2. 对于进程名称,输入名称,如 EIL

        3. 选择 Next

      • 在“提取选项”页面上:

        1. 对于源身份证明,请从下拉列表中选择 Oracle GoldenGate

        2. Alias(别名)下拉列表中选择 PostgreSQL 数据库。

        3. 对于提取线索名称,输入两个字符的线索名称,例如 I1

        4. 选择 Next

      • 在“提取参数”页上,将文本区域的内容替换为以下内容:

        EXTRACT EIL
        USERIDALIAS PostgreSQL_Compute, DOMAIN OracleGoldenGate
        EXTFILE I1, PURGE
        TABLE src_ociggll.*;

        注:在继续操作之前,请确保删除 USERIDALIAS 前面的 SOURCEDB 参数。

    2. 选择创建并运行

返回到“提取”页面,在此页面可以看到“提取”开始。

任务 4:创建初始加载提取的分配路径

要为初始加载提取创建分配路径,请执行以下操作:

  1. 在 Oracle Cloud 控制台的“部署”页上,选择目标大数据部署。

  2. 在部署详细信息页上,选择启动控制台,然后以管理员用户身份登录。

  3. 如果使用 IAM 身份证明存储,请继续执行 "Create a Distribution Path"(创建分发路径)步骤。如果使用 GoldenGate 身份证明存储,则创建源 GoldenGate 用于连接到目标 GoldenGate 的用户。

    1. 在导航菜单中,选择 User Administration

    2. 选择添加新用户(加号图标),按如下所示填写字段,然后选择提交

      • 对于用户名,输入 ggsnet

      • 对于角色,选择运算符

      • 输入两次口令进行验证。

  4. source PostgreSQL 部署控制台中,为上一步中创建的用户创建路径连接。

    1. 在导航菜单中,选择路径连接

    2. 选择添加路径连接(加号图标),按如下所示填写字段,然后选择提交

      • 对于身份证明别名,请输入 dpuser

      • 对于用户 ID,输入 ggsnet

      • 对于“Password(密码)”,输入上一步中使用的相同密码。

  5. 创建分配路径。

    1. 在服务菜单栏中,选择路径,然后选择添加分发路径(加号图标)。

    2. 按如下方式完成“Add Path(添加路径)”表单:

      • 在“路径信息”页面上:

        1. 对于 Path Name(路径名),输入此路径的名称。

        2. 选择 Next

      • 在“来源选项”页面上:

        1. 对于源提取,留空。

        2. 对于线索名称,输入“初始装入提取”线索名称 (I1)。

        3. 选择 Next

      • 在“目标选项”页面上:

        1. 对于目标,选择 wss

        2. 对于目标主机,输入目标部署 URL,不带 https:// 或任何尾随斜杠。

        3. 端口号中,输入 443

        4. 对于线索名称,输入 I1

        5. 对于目标验证方法,选择用户 ID 别名

        6. 对于,输入在上一步中创建的域名。

        7. 对于 Alias ,输入在上一步 (dpuser) 中创建的别名。

        8. 选择 Next

    3. 选择创建并运行

    返回到“分配服务”页面,您可以在该页面中查看创建的路径。

  6. target 部署控制台中,查看通过分发路径创建的接收器路径:

    1. 选择路径

    2. 查看路径详细信息。

任务 5:为初始装入添加复制

  1. 目标大数据部署控制台中,添加初始加载复制。

    1. 在导航菜单中,选择 Replicats ,然后选择 Add Replicat (加号图标)。

    2. 在 "Replicats"(复制)页面上,完成 "Add Replicat"(添加复制)字段,如下所示:

      1. 在 "Replication Information" 页面上:

        1. 对于复制类型,选择协调复制

        2. 对于进程名称,输入名称,例如 RIL

        3. 选择 Next

      2. 在“复制选项”页面上:

        1. 对于复制线索名称,输入任务 2 (I1) 中的线索名称。

        2. 对于目标,选择 "Snowflake"。

        3. 对于 Target Credentials(目标身份证明),选择 Snowflake 连接的别名

        4. 对于可用别名,从下拉列表中选择一个别名,例如 Snowflake。

        5. 选择 Streaming

        6. 选择 Next

      3. 在“参数文件”页上,添加以下映射:

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      4. 在“属性”页上,查看属性并添加 jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true

      5. 选择创建并运行

    返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。

  2. 要验证初始加载,请连接到 Snowflake 数据库并运行以下查询:

    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

    输出应返回由于初始加载而加载到目标数据库表中的数据。

任务 6:创建用于更改数据捕获的分配路径

  1. source PostgreSQL 部署控制台中,选择 Distribution Service

  2. 选择添加分发路径

  3. 按如下方式完成“Add Path(添加路径)”表单:

    1. 在“路径信息”页面上:

      1. 路径名中,输入名称。

      2. 选择 Next

    2. 在“来源选项”页面上:

      1. 对于源提取,选择更改数据捕获提取 (ECDC)。

      2. 对于线索名称,选择更改数据捕获线索文件 (C1)。

      3. 选择 Next

    3. 在“目标选项”页面上:

      1. 对于目标,选择 wss

      2. 对于目标主机,输入目标部署控制台 URL(您可以在部署详细信息页上找到此 URL,不带 https:// 或任何尾随斜杠)。

      3. 端口号中,输入 443

      4. 对于线索名称,输入 C1

      5. 对于目标验证方法,选择用户 ID 别名

      6. 对于,输入域名。

      7. 对于 Alias ,输入别名。

    4. 选择创建路径并运行

任务 7:添加用于更改数据捕获的复制

对源 PostgreSQL 数据库执行更新以验证复制到 Snowflake。

  1. 添加复制。

    1. 在目标大数据部署控制台中,选择管理服务,然后在导航菜单中,选择复制

    2. Replicats(复制)页面上,选择 Add Replicat(添加复制)(加号图标),然后按如下方式填写 "Add Replicat"(添加复制)表单:

      • 在“复制信息”页上:
        1. 对于 Replicat type(复制类型),选择 Classic(经典)Coordinated(协调)

        2. 对于进程名称,输入名称,如 RCDC

        3. 选择 Next

      • 在“复制选项”页面上:
        1. 对于复制线索名称,输入任务 3 (C1) 中的线索名称。

        2. 对于目标,选择 "Snowflake"。

        3. 对于目标身份证明,选择 Snowflake 连接的域和别名。

        4. 选择 Streaming

      • 在“参数文件”页上,添加以下映射,然后选择下一步

        INSERTALLRECORDS
        MAP src_ociggll.src_city, TARGET SRCMIRROR_OCIGGLL.SRC_CITY;
        MAP src_ociggll.src_region, TARGET SRCMIRROR_OCIGGLL.SRC_REGION;
        MAP src_ociggll.src_customer, TARGET SRCMIRROR_OCIGGLL.SRC_CUSTOMER;
        MAP src_ociggll.src_orders, TARGET SRCMIRROR_OCIGGLL.SRC_ORDERS;
        MAP src_ociggll.src_order_lines, TARGET SRCMIRROR_OCIGGLL.SRC_ORDER_LINES;
        MAP src_ociggll.src_product, TARGET SRCMIRROR_OCIGGLL.SRC_PRODUCT;
      • 在“属性”页上,查看属性,添加以下映射,然后选择创建并运行

        jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true

    返回到 "Replicats"(复制)页面,您可以在该页面中查看复制详细信息。

  2. 验证更改数据捕获:

    1. 对源 PostgreSQL 数据库执行更新以验证复制到 Snowflake。运行以下脚本以对 PostgreSQL 数据库执行插入:

      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1000,'Houston',20,743113);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1001,'Dallas',20,822416);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1002,'San Francisco',21,157574);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1003,'Los Angeles',21,743878);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1004,'San Diego',21,840689);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1005,'Chicago',23,616472);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1006,'Memphis',23,580075);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1007,'New York City',22,124434);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1008,'Boston',22,275581);
      Insert into src_ociggll.src_city (CITY_ID,CITY,REGION_ID,POPULATION) values (1009,'Washington D.C.',22,688002);
    2. 在源 PostgreSQL 部署控制台中,选择 RCDC,然后选择统计信息。验证 src_ociggll.src_city 是否具有 10 个插入。

      注:如果提取未捕获任何插入,则重新启动 ECDC 提取。

    3. 在目标大数据部署控制台中,选择 RCDC,查看其详细信息统计信息以验证插入数。

任务 8:监控和维护流程

  1. 监视复制过程

  2. Manage Trail files(管理线索文件)