新增 Snowflake 的 Replicat

瞭解如何在 OCI GoldenGate 資料複製中為 Snowflake 目標新增 Replicat 程序。

開始之前

先決條件

  • 驗證目標表格存在於 Snowflake 資料庫上。
  • 如果您打算使用任何外部階段位置,例如 S3、ADLS Gen2 或 GCS,則必須設定 Amazon Web Services、Google Cloud Platform 或 Azure 雲端帳戶。
  • Snowflake JDBC 驅動程式連線字串

Snowflake 資料庫使用者權限

用來複製到 Snowflake 的資料庫使用者必須具備下列權限:

  • 目標表格上的 INSERTUPDATEDELETE 以及 TRUNCATE
  • Snowflake 具名階段和外部階段上的 CREATEDROP
  • 如果使用外部階段 (S3、ADLS、GCS)、CREATEALTER 以及 DROP 外部表格。

新增 Replicat (23ai)

開始前

請確定複查此目標類型的特定先決條件

若要在 GoldenGate 23ai 中新增 Replicat ,請執行下列動作:
  1. OCI GoldenGate 部署主控台管理服務首頁上,按一下新增 Replicat (加圖示)。
  2. 在「新增 Replicat 」面板的 Replicat 資訊頁面上,視需要完成欄位,然後按一下下一步
    • 選取 Replicat 類型
      • 一般 Replicat
      • 協調的 Replicat
    • 請輸入程序名稱,長度不可超過 5 個字元。
    • 輸入描述,以協助區分此處理與其他處理。
  3. 在「Replicat 選項」頁上,視需要完成欄位,然後按「下一步」:
    1. 對於 Replicat 歷程檔:
      • 輸入名稱
      • 如果您預期歷程檔位於預設以外的位置,請輸入子目錄
      • 選取一個加密設定檔。如果未建立加密設定檔,預設會選取本機公事包。
      • 對於開始,請選取資料處理的起點:
        • 日誌中的位置 (預設)
        • Now
        • 自訂時間
    2. 對於歷程檔位置:
      • 輸入順序編號
      • 輸入 RBA 偏移量
    3. 對於目標,從下拉式清單中選取雪花狀,然後選取下列其中一項:
      1. 串流處理
      2. 暫存與合併,然後選取可用的暫存位置
    4. 針對目標證明資料:
      • 選取網域
      • 選取指定網域內的別名
      • 選取檢查點表格。保留預設選項,或選取您為目標部署建立的檢查點表格。
      • 選取繫線數目上限 (僅限協調複製 )。
  4. 受管理選項頁面上,視需要完成選擇性欄位,然後按下一步
    • 選取「基本資料名稱」(若有的話)。
    • 對部署狀況啟用「嚴重」。
    • 啟用並設定「自動啟動」設定值。
  5. 參數檔頁面上,您可以新增參數以進一步設定您的 Replicat 。例如:
    table source.table1;

    如果使用協調式 Replicat ,請將 TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/your_replicat_name.properties 新增至參數檔。

    附註:

    GoldenGate 預設使用格林威治標準時間 (GMT)。使用 SETENV 覆寫此 Replicat 處理的預設設定。此變更不適用於部署。舉例而言:

    setenv (TZ="US/Eastern")
    setenv (TZ="GMT+5")
  6. (選擇性) 在「屬性檔案」頁面上複查屬性:
    jvm.bootoptions:如果您需要新增更多記憶體至 Replicat JVM (-Xmx16g 最多使用 16 GB 的記憶體,增加 -Xmx 值;-Xmx32g 最高可達 32 GB,依此類推)。

    附註:

    已知與 Snowflake Streaming Handler 相關的問題因錯誤 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. 按一下建立並執行。如果您按一下建立,則可以稍後從管理服務首頁手動啟動 Replicat

新增 Replicat (21 c)

在 Oracle GoldenGate 21 c 中新增 Snowflake 的 Replicat:
  1. OCI GoldenGate 部署主控台的「管理服務總覽」頁面中,按一下新增 Replicat (加上圖示)。
  2. 在「新增 Replicat」頁面上,選取一個 Replicat 類型,然後按一下下一步
    Replicat 的類型包括:
    • 一般 Replicat
    • 協調式 Replicat
  3. 在「Replicat 選項」頁面上,完成下列欄位,然後按一下下一步
    1. 處理作業名稱中,輸入 Replicat 處理作業的名稱。
    2. 歷程檔名稱中,輸入兩個字元的歷程檔名稱。
    3. 如果是目標,請從下拉式清單中選取目標 Snowflake 連線。
    4. 如果是可用的別名,請從下拉式清單中選取您的別名。
    5. (選擇性) 啟用外部儲存,從下拉式清單中選取可用的暫存位置。
  4. 在「Replicat 參數」頁面上,新增必要的對應,然後按一下下一步

    附註:

    • 如果使用協調式 Replicat,請在「參數檔」的第二行新增下列參數:
      TARGETDB LIBFILE libggjava.so SET property=/u02/Deployment/etc/conf/ogg/<replicat
            name>.properties

      若使用協調式 Replicat,將會建立多個檔案。

      如果省略,將會發生下列錯誤:

      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 覆寫 Replicat 的預設設定。此變更不適用於部署。舉例而言:
      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 儲存整合
    • jvm.bootoptions:如果您需要新增更多記憶體至 Replicat JVM (-Xmx16g 最多使用 16 GB 的記憶體,增加 -Xmx 值;-Xmx32g 最高可達 32 GB,依此類推)。
  6. 按一下建立並執行。如果您按一下建立,則可以稍後從「管理服務總覽」頁面手動啟動 Replicat。
您可以返回「管理服務總覽」頁面,檢視 Replicat 處理作業的建立及存取 Replicat 動作。

已知問題

錯誤 37518857:OGGDAA GGS Snowflake Streaming Replicat 錯誤

Snowflake Streaming Handler 失敗於:Exception: java.lang.StackOverflowError thrown from the UncaughtExceptionHandler in thread "process reaper"

解決方法:將下列各項新增至您的 Replicat 特性檔案:
jvm.bootoptions= -Djdk.lang.processReaperUseDefaultStackSize=true