为 Snowflake 添加副本

了解如何在 OCI GoldenGate 数据复制中为 Snowflake 目标添加复制流程。

开始之前

先决条件

  • 验证 Snowflake 数据库上是否存在目标表。
  • 如果您打算使用任何外部登台位置(例如 S3、ADLS Gen2 或 GCS),则必须设置 Amazon Web Services、Google Cloud Platform 或 Azure Cloud 账户。
  • Snowflake JDBC 驱动程序连接字符串

Snowflake 数据库用户权限

必须向用于复制到 Snowflake 的数据库用户授予以下权限:

  • 目标表上的 INSERTUPDATEDELETETRUNCATE
  • Snowflake 上的 CREATEDROP 命名为 stage 和 external stage。
  • 如果使用外部阶段 (S3,ADLS,GCS),CREATEALTERDROP 外部表。

添加副本 (23ai)

开始之前

确保查看特定于此目标类型的先决条件

要在 GoldenGate 23ai 中添加复制,请执行以下操作:
  1. OCI GoldenGate 部署控制台管理服务主页上,单击添加复制(加号图标)。
  2. 在“添加复制”面板的复制信息页上,根据需要填写字段,然后单击下一步
    • 选择复制类型
      • 经典复制
      • 协调的复制
    • 输入进程名称,长度不超过 5 个字符。
    • 输入说明,以帮助区分此流程与其他流程。
  3. 复制选项页上,根据需要填写字段,然后单击下一步
    1. 对于复制线索:
      • 输入名称
      • 如果希望跟踪文件位于非默认位置,请输入子目录
      • 选择加密配置文件。如果未创建加密概要信息,则默认情况下会选择本地 Wallet。
      • 对于开始,选择数据处理的起点:
        • 日志中的位置(默认)
        • Now
        • 定制时间
    2. 对于线索位置:
      • 输入序号
      • 输入 RBA 偏移
    3. 对于目标,从下拉列表中选择 Snowflake ,然后选择以下项之一:
      1. 暂存和合并,然后选择可用暂存位置
    4. 对于目标身份证明:
      • 选择
      • 选择指定域中的别名
      • 选择检查点。保留默认选择,或选择为目标部署创建的检查点表。
      • 选择最大线程数(仅限协调的复制)。
  4. 托管选项页上,根据需要填写可选字段,然后单击下一步
    • 选择概要文件名称(如果有)。
    • 启用对部署健康状况至关重要。
    • 启用和配置自动启动设置。
  5. 参数文件页上,可以添加参数以进一步配置复制。例如:
    table source.table1;

    如果使用协调的 Replicat ,请将 TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/your_replicat_name.properties 添加到参数文件中。

    注意:

    GoldenGate 默认使用格林威治标准时间 (GMT)。使用 SETENV 覆盖此复制进程的默认设置。此更改不适用于部署。例如:

    setenv (TZ="US/Eastern")
    setenv (TZ="GMT+5")
  6. (可选)在“Properties File(属性文件)”页面上,查看以下属性:
    jvm.bootoptions:如果需要向复制 JVM 添加更多内存,请增大 -Xmx 值(-Xmx16g 最多使用 16 GB 的内存,-Xmx32g 最多使用 32 GB,依此类推)。

    注意:

    与 Snowflake Streaming 处理程序相关的一个已知问题失败,出现错误 Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "process reaper"。要解决此问题,请将以下内容添加到 Replicat 属性文件中:
    jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true

    有关此目标属性的信息以及阶段和合并处理程序与流处理程序之间的差异,请参阅 Oracle GoldenGate for Distributed Applications and Analytics 指南中的 Snowflake

  7. 单击创建并运行。如果单击创建,则可以稍后从管理服务主页手动启动复制

添加复制 (21 c )

要在 Oracle GoldenGate 21 c 中为 Snowflake 添加复制:
  1. OCI GoldenGate 部署控制台的“管理服务概览”页上,单击添加复制(加号图标)。
  2. 在“添加复制”页上,选择复制类型,然后单击下一步
    副本的类型包括:
    • 经典复制
    • 协调的复制
  3. 在“复制选项”页上,填写以下字段,然后单击下一步
    1. 对于进程名称,输入复制进程的名称。
    2. 对于线索名称,输入两个字符的线索名称。
    3. 对于目标,从下拉列表中选择目标 Snowflake 连接。
    4. 对于可用别名,请从下拉列表中选择您的别名。
    5. (可选)启用外部存储以从下拉列表中选择可用的暂存位置。
  4. 在“复制参数”页上,添加必需的映射,然后单击下一步

    注意:

    • 如果使用协调复制,请在参数文件的第二行添加以下参数:
      TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/<replicat
            name>.properties

      使用协调复制将创建多个文件。

      如果省略,您将遇到以下错误:

      OGG-01091 Oracle GoldenGate Delivery, RSNOW.prm: Unable to open file
            "/u02/Deployment/etc/conf/ogg/<replicat name>001.properties" (error 2, No such file or
            directory).
    • 如果 Snowflake 中存在长时间运行的合并操作,并且观察到大量锁,请确保没有其他表正在修改同一个表。此外,请谨慎使用协调复制,因为这可能会导致大量表锁定。
    • GoldenGate 默认使用格林威治标准时间 (GMT)。使用 SETENV 覆盖复制的默认设置。此更改不适用于部署。例如:
      setenv (TZ="US/Eastern")
      setenv (TZ="GMT+5")

      了解有关 SETENV 的详细信息。

  5. (可选)在“属性文件”页面上,查看以下属性:

    注意:

    这些属性是在您创建连接时设置的,不应在此处修改。
    • ggs.eventhandler.snowflake.connectionURL:用于连接到 Snowflake 的 JDBC URL。
    • ggs.eventhandler.snowflake.UserName:Snowflake 数据库用户名。
    • ggs.eventhandler.snowflake.Password:与 Snowflake 数据库用户关联的密码。
    • ggs.eventhandler.snowflake.storageIntegration:Snowflake 数据仓库用于访问相应对象存储文件的身份证明。有关更多信息,请参见 Snowflake storage integration
    • jvm.bootoptions:如果需要向复制 JVM 添加更多内存,请增大 -Xmx 值(-Xmx16g 最多使用 16 GB 的内存,-Xmx32g 最多使用 32 GB,依此类推。)
  6. 单击创建并运行。如果单击创建,则以后可以从“管理服务概览”页手动启动复制。
您可以返回到“管理服务概览”页,在该页中可以查看复制进程的创建并访问复制操作。

已知问题

错误 37518857:OGGDAA GGS Snowflake 流复制错误

Snowflake 流处理程序失败,出现以下情况:Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "process reaper"

解决方法:将以下内容添加到复制属性文件中:
jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true