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

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

開始之前

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

  • 使用 PostgreSQL 存取 OCI 資料庫
  • OCI 資料庫搭配 PostgreSQL 使用之 VCN 的安全清單中開啟連接埠 5432
  • 存取 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. 連線到 OCI PostgreSQL。請參閱連線至資料庫以瞭解詳細資訊。
  3. 在 OCI PostgreSQL 中建立 GoldenGate 的資料庫和使用者:
    1. 資料庫
      1. 建立資料庫 ociggll;
      2. \c ociggll;
      3. 建立綱要 src_ociggll;
      4. 載入範例指令碼 (seedSRCOCIGGLL_PostgreSQL.sql)
    2. 使用者
      1. 使用密碼 '<password>' 建立使用者 ggadmin
      2. 將所有 PRIVILEGES ON DATABASE ociggll 授予 ggadmin;
      3. 選取 SCHEMA src_ociggll 中的所有表格以 ggadmin;

設定 Snowflake 資料庫

  1. 建立 Snowflake 資料庫
  2. 使用者必須建立公開金鑰組和私密金鑰組,才能在 Snowflake 中進行認證
  3. Create a user specifically for GoldenGate in Snowflake with appropriate privileges.
  4. 將公開金鑰新增至 Snowflake 使用者,例如:ALTER USER example_user SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
  5. 使用範例綱要建立目標表格。

工作 1:建立 OCI GoldenGate 資源

此快速啟動範例需要來源和目標的部署和連線。
  1. PostgreSQL 23ai 需要 GoldenGate。
  2. 建立來源 PostgreSQL 資料庫的 PostgreSQL 部署
  3. 為目標 Snowflake 資料庫建立大數據部署
  4. 使用下列值建立 PostgreSQL 連線
    1. 如果是類型,請從下拉式清單中選取 OCI 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 串流唯一支援的金鑰組認證類型。
    3. 若為使用者名稱,請輸入名稱。
    4. 上傳您先前建立的私密金鑰
    5. 在「私密金鑰密碼」欄位中輸入私密金鑰密碼詞組。
  6. 建立目標 Big Data 部署的 GoldenGate 連線,然後將此連線指派給來源 PostgreSQL 部署
  7. 將來源 PostgreSQL 連線指派給 PostgreSQL 部署
  8. Snowflake 連線指派給目標大數據部署

作業 2:啟用補充記錄日誌

若要啟用補充記錄日誌,請執行下列動作:
  1. 啟動 PostgreSQL GoldenGate 部署主控台:
    1. 從「部署」頁面,選取 PostgreSQL 部署以檢視其詳細資訊。
    2. 在 PostgreSQL 部署詳細資訊頁面上,按一下啟動主控台
    3. 在部署主控台登入頁面上,輸入「任務 1」步驟 1 中提供的 GoldenGate 管理憑證。

      附註:

      如果在建立部署時未選取 IAM 作為證明資料存放區,則必須進行登入。
  2. 在 GoldenGate 23ai 中,依序按一下左側導覽中的資料庫連線、來源 PostgreSQL 資料庫,然後按一下 Trandata
  3. 在 TRANDATA 頁面的「TRANDATA 資訊」旁邊,按一下新增 TRANDATA (加號圖示)。
  4. 在「交易資料」面板中,針對結構名稱,輸入 src_ociggll.*,然後按一下提交

    附註:

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

工作 3:建立擷取

  1. 新增 Change Data Capture Extract
    1. 在左側導覽中,按一下擷取
    2. 擷取頁面上,按一下新增擷取 (加號圖示),然後完成下列欄位:
      • 在「摘錄資訊」頁面上:
        1. 對於擷取類型,請選取變更資料擷取擷取
        2. 程序名稱中,輸入擷取的名稱,例如 ECDC
        3. 按一下下一步
      • 擷取選項頁面上:
        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate
        2. 別名下拉式清單中選取來源 PostgreSQL 資料庫。
        3. 擷取歷程檔名稱中,輸入兩個字元的歷程檔名稱,例如 C1
        4. 按一下註冊,然後按下一步
      • 擷取參數頁面上,新增:
        TABLE src_ociggll.*;
    3. 按一下建立並執行
  2. 新增初始載入擷取
    1. 在「擷取」頁面上,按一下新增擷取,然後完成「新增擷取」表單,如下所示:
      • 擷取資訊頁面上:
        1. 對於擷取類型,請選取初始載入擷取
        2. 程序名稱中,輸入名稱,例如 EIL
        3. 按一下下一步
      • 擷取選項頁面上:
        1. 若為「來源」證明資料,請從網域下拉式清單中選取 Oracle GoldenGate
        2. 別名下拉式清單中選取 PostgreSQL 資料庫。
        3. 對於擷取歷程檔名稱,請輸入兩個字元的歷程檔名稱,例如 I1
        4. 按一下下一步
      • 擷取參數頁面中,以下列項目取代 TABLE *.*
        TABLE src_ociggll.*;
    2. 按一下建立並執行
您會返回擷取頁面,您可以在此頁面監看擷取的開頭。

工作 4:為 Initial Load Extract 建立 Distribution Path

若要建立 Initial Load ExtractDistribution Path,請執行下列動作:
  1. 在 Oracle Cloud 主控台的「部署」頁面上,選取目標大數據部署。
  2. 在部署詳細資訊頁面上,按一下啟動主控台。使用在作業 1 步驟 2 中建立的管理員使用者詳細資訊登入。
  3. 如果使用 IAM 證明資料存放區,請繼續進行「建立 Distribution Path」步驟。如果使用 GoldenGate 證明資料存放區,請建立來源 GoldenGate 用來連線目標 GoldenGate 的使用者。
    1. 在導覽功能表中,按一下使用者管理
    2. 按一下新增使用者 (加號圖示),依下列方式完成欄位,然後按一下送出
      • 若為使用者名稱,請輸入 ggsnet
      • 對於角色,請選取運算子
      • 請輸入密碼兩次以進行驗證。
  4. 來源 PostgreSQL 部署主控台中,為上一個步驟中建立的使用者建立「路徑連線」。
    1. 在瀏覽功能表中,按一下路徑連線
    2. 按一下新增路徑連線 (加號圖示),依下列方式完成欄位,然後按一下送出
      • 若為「證明資料別名」,請輸入 dpuser
      • 針對「使用者 ID」,輸入 ggsnet
      • 若為「密碼」,請輸入上一個步驟中使用的相同密碼。
  5. 建立 Distribution Path
    1. 在服務功能表列中,按一下 Distribution Service ,然後按一下新增 Distribution Path (加號圖示)。
    2. 完成「新增路徑」表單,如下所示:
      • 在「路徑資訊」頁面上:
        1. 路徑名稱中,輸入此路徑的名稱。
        2. 按一下下一步
      • 在「來源選項」頁面上:
        1. 對於來源 Extract ,請保留空白。
        2. 歷程檔名稱中,輸入 Initial Load Extract 歷程檔名稱 (I1)。
        3. 按一下下一步
      • 在「目標選項 (Target Options)」頁面上:
        1. 目標通訊協定中,選取 wss
        2. 目標主機中,輸入目標部署 URL,而不使用 https:// 或任何尾端斜線。
        3. 對於連接埠號碼,請輸入 443
        4. 歷程檔名稱中,輸入 I1
        5. 目標驗證方法中,選取 OAuth

          附註:

          如果在建立部署時選取 GoldenGate 作為證明資料存放區,請選取 UserID 別名。否則,請選取 OAuth
        6. 網域中,輸入在上一個步驟中建立的網域名稱。
        7. 別名中,輸入在上一個步驟中建立的別名 (dpuser)。
        8. 按一下下一步
    3. 按一下建立並執行
    您可以返回 Distribution Service 頁面,複查建立的路徑。
  6. 目標大數據部署主控台中,複查 Distribution path 結果所建立的 Receiver Path
    1. 按一下 Receiver Service
    2. 檢閱 Receiver Path 詳細資訊。

工作 5:為 Initial Load 新增 Replicat

  1. 目標大數據部署主控台中,新增 Initial Load Replicat
    1. 在導覽功能表中,按一下複製,然後按一下新增 Replicat (加號圖示)。
    2. Replicats 頁面上,依下列方式完成「新增 Replicat」欄位:
      1. 在「複寫資訊 (Replication Information)」頁面上:
        1. 對於 Replicat 類型,請選取協調式 Replicat
        2. 程序名稱中,輸入名稱,例如 RIL
        3. 按一下下一步
      2. 在「Replicat 選項 (Replicat Options)」頁面上:
        1. 複製歷程檔名稱中,輸入工作 2 的歷程檔名稱 (I1)。
        2. 針對目標,選取 Snowflake。
        3. 若為目標證明資料,請選取 Snowflake 連線的網域別名
        4. 若為可用的別名,請從下拉式清單中選取別名,例如 Snowflake。
        5. 選取串流
        6. 按一下下一步
      3. 在「參數檔 (Parameter File)」頁面上新增下列對應:
        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 頁面,您可以在此複查 Replicat 詳細資訊。

  2. 若要驗證 Initial Load,請連線至 Snowflake 資料庫並執行下列查詢:
    select * from SRCMIRROR_OCIGGLL.SRC_CITY;
    select * from SRCMIRROR_OCIGGLL.SRC_CUSTOMER;

    輸出會傳回因 Initial Load 而載入目標資料庫表格的資料。

工作 6:為 Change Data Capture 建立 Distribution Path

若要建立 Change Data CaptureDistribution Path,請執行下列動作:
  1. 來源 PostgreSQL 部署主控台中,按一下分送服務
  2. 按一下新增 Distribution Path
  3. 完成「新增路徑」表單,如下所示:
    1. 在「路徑資訊」頁面上:
      1. 對於路徑名稱,請輸入名稱。
      2. 按一下下一步
    2. 在「來源選項」頁面上:
      1. 來源 Extract 中,選取 Change Data Capture Extract (ECDC))。
      2. 歷程檔名稱中,選取 Change Data Capture 歷程檔 (C1)。
      3. 按一下下一步
    3. 在「目標選項 (Target Options)」頁面上:
      1. 目標中,選取 wss
      2. 目標主機中,輸入目標部署主控台 URL (您可以在部署詳細資料頁面上找到此 URL,而不使用 https:// 或任何尾端斜線。
      3. 對於連接埠號碼,請輸入 443
      4. 歷程檔名稱中,輸入 C1
      5. 目標驗證方法中,選取 OAuth

        附註:

        如果在建立部署時選取 GoldenGate 作為證明資料存放區,請選取 UserID 別名。否則,請選取 OAuth
      6. 網域中,輸入網域名稱。
      7. 針對別名,輸入別名。
    4. 按一下「建立路徑並執行」。
  4. 在目標「大數據」部署主控台中,按一下 Receiver Service ,然後複查建立的 Receiver path

工作 7:為 Change Data Capture 新增 Replicat

執行來源 PostgreSQL 資料庫的更新,以驗證複製至 Snowflake
  1. 新增 Replicat
    1. 在目標「大數據」部署主控台中,按一下 Administration Service ,然後在導覽功能表中,按一下 Replicats
    2. Replicats 頁面上,按一下新增 Replicat (加號圖示),然後完成新增 Replicat 表單,如下所示:
      • 在 Replicat 資訊頁面上:
        1. 對於 Replicat 類型,請選取 ClassicCoordinated
        2. 程序名稱中,輸入名稱,例如 RCDC
        3. 按一下下一步
      • 在「Replicat 選項」頁面上:
        1. Replicat 歷程檔名稱中,輸入工作 3 的歷程檔名稱 (C1)。
        2. 針對目標,選取 Snowflake。
        3. 若為目標證明資料,請選取 Snowflake 連線的「網域」和「別名」。
        4. 選取串流
      • 在「參數檔 (Parameter Files)」頁面上新增下列對應,然後按一下下一步 (Next)
        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 頁面,您可以在此複查 Replicat 詳細資訊。

  2. 驗證 Change Data Capture
    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. 在目標「大數據」部署主控台中,選取 RCDC,複查其詳細資訊統計資料以驗證「插入」數目。

作業 8:監視與維護處理

  1. 監督效能
  2. 管理歷程檔