使用串流處理程式將資料從 PostgresSQL 複製到 Snowflake

瞭解如何使用 OCI GoldenGate,使用串流處理程式將資料從 PostgreSQL 複製到 Snowflake。

開始之前

若要順利完成此快速啟動,您必須具備下列項目:

使用 PostgreSQL 設定 OCI 資料庫

  1. 建立具備 PostgreSQL 的 OCI 資料庫。

    1. 在 OCI 資料庫中搭配 PostgreSQL:

      1. 選取組態,

      2. 使用現有的組態,例如 PostgreSQL.VM.Standard.E5.Flex-14-0_51。

      3. 選取複製組態,重新命名,在「使用者」變數 (讀取 / 寫入) 下新增 wal_level,然後將其設為「邏輯」。

      4. 選取建立。

      5. 請參閱複製組態以瞭解詳細資訊。

    2. 建立資料庫系統時,請使用 wal_level 設為 true 的組態。請參閱建立資料庫系統以瞭解詳細資訊。

  2. 使用 PostgreSQL 連線至 OCI 資料庫。請參閱連線至資料庫以瞭解詳細資訊。

  3. 使用 PostgreSQL 在 OCI 資料庫中建立 GoldenGate 資料庫和使用者:

    1. Database

      1. 建立資料庫 ociggll;

      2. \c ociggll

      3. 建立綱要 src_ociggll;

      4. 載入範例命令檔

    2. User

      1. 使用密碼 <password> 建立使用者 ggadmin;

      2. 在 DATABASE ocigll 上授予所有權限給 ggadmin;

      3. 授予在 SCHEMA src_ociggll 中選取所有標籤給 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. 在密碼中,輸入您的密碼。

    5. 若為安全協定,請從下拉式清單中選取 TLS ,然後選取偏好。

  5. 建立具有下列值的 Snowflake 連線:

    1. 在連線 URL 中,輸入 jdbc:snowflake://<account_identifier>.snowflakecomputing.com/?warehouse=<warehouse name>&db=OCIGGLL。

      注意:請確定將 <account_identifier> 和 <warehouse name> 取代為適當的值。

    2. 若為認證類型,請從下拉式清單中選取金鑰組認證。

      注意: Snowflake Streaming 是唯一支援的認證類型。

    3. 在使用者名稱中,輸入名稱。

    4. 上傳您先前建立的私密金鑰。

    5. 在私有金鑰密碼欄位中輸入私有金鑰密碼詞組。

  6. 建立 GoldenGate 連線以進行目標大數據部署,然後將此連線指派給來源 PostgreSQL 部署。

  7. 指定來源 PostgreSQL 連線至 PostgreSQL 部署。

  8. 指派 Snowflake 連線至目標 Big Data 部署。

任務 2:啟用補充記錄

若要啟用補充日誌記錄:

  1. 啟動 PostgreSQL GoldenGate 部署主控台:

    1. 從「部署」頁面中,選取 PostgreSQL 部署以檢視其詳細資訊。

    2. 在 PostgreSQL 部署詳細資訊頁面上,選取啟動主控台。

    3. 在建置主控台登入頁面中,輸入「工作 1」步驟 1 中提供的 GoldenGate 管理證明資料。

      注意:如果在建立部署時未選取 IAM 作為證明資料存放區,則必須登入。

  2. 在建置主控台中,選取左導覽中的 DB 連線,接著選取來源 PostgreSQL 資料庫,然後選取 Trandata 。

  3. 在 TRANDATA 頁面的「TRANDATA 資訊」旁邊,選取新增 TRANDATA (加號圖示)。

  4. 在 Trandata 面板中,針對綱要名稱,輸入 src_ociggll,然後選取提交。

    注意:使用搜尋欄位來搜尋 src_ociggll,並確認已新增表格。

任務 3:建立擷取

  1. 新增「變更資料擷取」擷取:

    1. 在左側導覽中,選取擷取,

    2. 在「擷取」頁面上,選取新增擷取 (加號圖示),然後完成欄位,如下所示:

      • 在「擷取資訊」頁面上:

        1. 對於擷取類型,請選取變更資料擷取擷取。

        2. 在程序名稱中,輸入 Extract 的名稱,例如 ECDC。

        3. 選取下一步。

      • 在「擷取選項」頁面上:

        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate

        2. 從別名下拉式清單中選取來源 PostgreSQL 資料庫。

        3. 對於「擷取歷程檔名稱」,請輸入兩個字元的歷程檔名稱,例如 C1。

        4. 選取下一步。

      • 在「擷取參數」頁面上,使用下列項目取代 MAP *.*, TARGET *.*;:

        TABLE SRC_OCIGGLL.*;
    3. 選取建立並執行。

  2. 新增初始載入摘錄:

    1. 在「擷取」頁面上,選取新增擷取,然後完成「新增擷取」表單,如下所示:

      • 在「擷取資訊」頁面上:

        1. 對於「擷取」類型,請選取初始載入擷取。

        2. 在處理名稱中,輸入名稱,例如 EIL。

        3. 選取下一步。

      • 在「擷取選項」頁面上:

        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate 。

        2. 從別名下拉式清單中選取 PostgreSQL 資料庫。

        3. 在擷取歷程檔名稱中輸入兩個字元的歷程檔名稱,例如 I1。

        4. 選取下一步。

      • 在「擷取參數」頁面上,以下列項目取代文字區域的內容:

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

        注意:請確定先移除 USERIDALIAS 前面的 SOURCEDB 參數,再繼續進行。

    2. 選取建立並執行。

您可返回「摘錄」頁面,在此您可以觀察「摘錄」的開始。

任務 4:建立初始載入擷取的分配路徑

若要建立初始載入擷取的分配路徑,請執行下列動作:

  1. 在 Oracle Cloud 主控台的「部署」頁面中,選取目標大數據部署。

  2. 在部署詳細資料頁面上,選取啟動主控台,然後以管理員使用者身分登入。

  3. 如果使用 IAM 證明資料存放區,請繼續執行「建立分送路徑」步驟。如果使用 GoldenGate 證明資料存放區,請建立來源 GoldenGate 用來連線至目標 GoldenGate 的使用者。

    1. 在導覽功能表中,選取使用者管理。

    2. 選取新增使用者 (加號圖示)、依下列方式完成欄位,然後選取提交:

      • 在使用者名稱中,輸入 ggsnet。

      • 在角色中,選取運算子。

      • 輸入密碼兩次以進行驗證。

  4. 在來源 PostgreSQL 建置主控台中,為在上一個步驟中建立的使用者建立「路徑連線」。

    1. 在導覽功能表中,選取路徑連線。

    2. 選取新增路徑連線 (加號圖示)、依下列方式完成欄位,然後選取送出:

      • 在「證明資料別名」中輸入 dpuser。

      • 對於使用者 ID,請輸入 ggsnet

      • 若為「密碼」,請輸入上一個步驟所使用的相同密碼。

  5. 建立分配路徑。

    1. 在服務功能表列中,選取路徑,然後選取新增分送路徑 (加號)。

    2. 完成「新增路徑」表單,如下所示:

      • 在「路徑資訊 (Path Information)」頁面上:

        1. 在路徑名稱中,輸入此路徑的名稱。

        2. 選取下一步。

      • 在「來源選項 (Source Options)」頁面上:

        1. 對於來源擷取,請保留空白。

        2. 在歷程檔名稱中,輸入「起始載入擷取」歷程檔名稱 (I1)。

        3. 選取下一步。

      • 在「目標選項 (Target Options)」頁面上:

        1. 在目標中,選取 wss 。

        2. 針對目標主機,輸入不含 https:// 或任何尾端斜線的目標部署 URL。

        3. 在連接埠號碼中,輸入 443。

        4. 在歷程檔名稱中,輸入 I1。

        5. 在目標認證方法中,選取 UserID 別名。

        6. 在網域中,輸入在上一個步驟中建立的網域名稱。

        7. 在別名中,輸入在上一個步驟中建立的別名 (dpuser)。

        8. 選取下一步。

    3. 選取建立並執行。

    您可返回「分送服務」頁面,複查建立的路徑。

  6. 在目標建置主控台中,複查因「分送」路徑而建立的「接收者」路徑:

    1. 選取路徑。

    2. 複查「路徑」詳細資訊。

作業 5:新增初始載入的 Replicat

  1. 在目標大數據建置主控台中,新增「起始載入 Replicat」。

    1. 在導覽功能表中,選取複製,然後選取新增 Replicat (加號圖示)。

    2. 在「複本」頁面上,依下列方式完成「新增複本」欄位:

      1. 在「複製資訊 (Replication Information)」頁面上:

        1. 在 Replicat 類型中,選取協調式 Replicat 。

        2. 在程序名稱中,輸入名稱,例如 RIL。

        3. 選取下一步。

      2. 在「Replicat 選項」頁面上:

        1. 在複製追蹤名稱中,輸入任務 2 (I1) 的追蹤名稱。

        2. 在目標中,選取 Snowflake。

        3. 在目標證明資料中,選取 Snowflake 連線的網域和別名。

        4. 對於可用的別名,請從下拉式清單中選取別名,例如 Snowflake。

        5. 選取串流。

        6. 選取下一步。

      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. 選取建立並執行。

    您可以返回「複本」頁面,複查 Replicat 詳細資訊。

  2. 若要驗證「初始載入」,請連線至 Snowflake 資料庫並執行下列查詢:

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

    輸出應傳回因為「起始載入」而載入至目標資料庫表格的資料。

作業 6:建立變更資料擷取的分配路徑

  1. 在來源 PostgreSQL 建置主控台中,選取分配服務。

  2. 選取新增分配路徑。

  3. 完成「新增路徑」表單,如下所示:

    1. 在「路徑資訊 (Path Information)」頁面上:

      1. 在路徑名稱中,輸入名稱。

      2. 選取下一步。

    2. 在「來源選項 (Source Options)」頁面上:

      1. 對於來源擷取,請選取「變更資料擷取擷取擷取」(ECDC)。

      2. 針對歷程檔名稱,選取「變更資料擷取」歷程檔 (C1)。

      3. 選取下一步。

    3. 在「目標選項 (Target Options)」頁面上:

      1. 在目標中,選取 wss 。

      2. 在目標主機中,輸入目標建置主控台 URL (您可以在建置詳細資訊頁面上找到此 URL,而不需要 https:// 或任何尾端斜線)。

      3. 在連接埠號碼中,輸入 443。

      4. 在歷程檔名稱中,輸入 C1。

      5. 在目標認證方法中,選取 UserID 別名。

      6. 針對網域,輸入網域的名稱。

      7. 針對別名,輸入別名。

    4. 選取建立路徑並執行。

作業 7:新增變更資料擷取的 Replicat

執行來源 PostgreSQL 資料庫更新,以驗證對 Snowflake 的複寫。

  1. 新增 Replicat。

    1. 在目標 Big Data 部署主控台中,選取管理服務,然後從導覽功能表中選取複製。

    2. 在複製頁面上,選取新增 Replicat (加號圖示),然後完成「新增 Replicat」表單,如下所示:

      • 在 Replicat 資訊頁面上:
        1. 對於複製類型,請選取傳統或協調。

        2. 在處理名稱中,輸入名稱,例如 RCDC。

        3. 選取下一步。

      • 在「Replicat 選項」頁面上:
        1. 在複製追蹤名稱中,輸入任務 3 (C1) 的追蹤名稱。

        2. 在目標中,選取 Snowflake。

        3. 在目標證明資料中,選取 Snowflake 連線的「網域」和「別名」。

        4. 選取串流。

      • 在「參數檔」頁面上,新增下列對應,然後選取下一步:

        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

    您可以返回「複本」頁面,複查 Replicat 詳細資訊。

  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 個插入。

      注意:如果 Extract 未擷取任何插入,請重新啟動 ECDC Extract。

    3. 在目標 Big Data 部署主控台中,選取 RCDC,複查其詳細資訊和統計資料來驗證插入數目。

工作 8:監督和維護處理作業

  1. 監督複製處理作業。

  2. 管理歷程檔。