PostgreSQL:支援的資料類型、物件及作業

Oracle GoldenGate for PostgreSQL 支援為支援的 PostgreSQL 資料庫版本擷取及傳遞初始載入和交易資料。

Oracle GoldenGate for PostgreSQL 支援來源資料的對應、篩選及轉換,除非本文件中另有說明,以及將衍生自 Oracle GoldenGate 支援之其他來源資料庫的資料複製到 PostgreSQL 資料庫中。

支援的資料庫

以下是 Oracle GoldenGate for PostgreSQL 支援的資料庫和限制:

高可用性考量

Oracle GoldenGate 支援從 PostgreSQL 高可用性組態擷取變更資料。此功能僅適用於 PostgreSQL 資料庫版本 16 和更新版本。您可以在主要伺服器或「高可用性」設定中的任何唯讀待命伺服器上設定變更資料擷取。為了避免容錯移轉時可能發生的資料遺失和手動介入,Oracle GoldenGate 建議您使用同步複製設定「高可用性」設定。

請參閱 PostgreSQL 高可用性容錯移轉文件 ID 2818379.1 的 Oracle GoldenGate 程序,瞭解可能發生的資料遺失與手動介入情況的詳細資訊。

若要從「PostgreSQL 高可用性」設定「CDC 擷取」,請執行下列任務:1。您可以將 Extract 設定為從主要伺服器擷取資料,或在「高可用性」設定中擷取唯讀待命伺服器的資料。

  1. 在某個節點 (主要或待命) 上設定 Extract 時,必須同時在「高可用性」設定中的所有其他節點上建立相同名稱的複製槽,才能開始資料擷取。

    1. 使用 REGISTER EXTRACT 命令在一個伺服器 (設定 Extract 的位置) 上建立複製槽位,如下列範例所示:

      REGISTER EXTRACT exte
    2. 在註冊 Extract 之後,立即建立同名的複製槽位。您必須在「高可用性」設定中明確設定的所有其他節點上使用相同的複製槽位名稱。

      postgres=# select pg_create_logical_replication_slot('exte_ac6b520cab2871b7', 'test_decoding');
       pg_create_logical_replication_slot
      
      ------------------------------------
       (exte_ac6b520cab2871b7,0/8169E00)
      (1  row)
      2025-01-20T06:58:22Z  INFO    OGG-25355  Successfully created replication slot 'exte_ac6b520cab2871b7' for Extract group 'EXTE' in database 'postgres'.
    3. 連線至對應的資料庫,然後從 PSQL 執行 pg_create_logical_replication_slot 敘述句。注意:對於在待命伺服器上建立複製槽位的注意事項:嘗試在唯讀待命伺服器上建立複製槽位時 (使用 REGISTER EXTRACT 命令或 pg_create_logical_replication_slot 敘述句),只有在高可用性設定中主要伺服器上的任何表格執行某些 DML (可以是任何隨機 DML) 之後,作業才會完成。或者,可以在主要伺服器上啟用活動訊號功能,這可能會導致主要伺服器上必要的 DML 活動,以完成待命伺服器上的複製槽位建立作業。

  1. PostgreSQL 高可用性設定中的任何唯讀待命伺服器都不支援 ADD TRANDATA 或 DELETE TRANDATA 命令。唯讀待命伺服器上任何表格的 REPLICA IDENTITY 設定,會與主要伺服器上對應表格的 REPLICA IDENTITY 設定相同。

  2. 若要在唯讀待命伺服器上設定資料擷取時使用活動訊號功能,應在主要伺服器上啟用活動訊號功能。

  3. 在容錯移轉的情況下,應修改擷取參數檔以連線至所需的節點 (根據需求的主要 / 待命),以便在容錯移轉後繼續擷取資料。

    範例

    假設 PostgreSQL 高可用性叢集中有三個節點,且有對應的連線別名:

    Node1 (目前主要) 與對應的連線別名:node1

    Node2 (待命) 與對應的連線別名:node2

    Node3 (待命) 與對應的連線別名:node3

    容錯移轉之前,如果將 Extract 設定為從其中一個節點擷取資料 (例如 node2),則 Extract 參數檔會包含類似下列的項目:

    USERIDALIAS node2

    如果容錯移轉,則主要節點 (node1) 會停止運作,而次要節點 (node2) 會成為新的主要節點,然後可能有兩種可能:

    1. 若要繼續從相同 node2 擷取資料,請執行下列動作:

      • Extract 參數檔中不需要變更。

      • 重新啟動 Extract。

    2. 若要一律從不同的節點擷取資料,請執行下列動作:

      • 變更 Extract 參數檔,以連線至想要的節點,例如 Node3。

        USERIDALIAS node3
      • 重新啟動 Extract。

支援的 PostgreSQL 資料類型

以下是 Oracle GoldenGate 支援的 PostgreSQL 資料類型清單,以及這項支援的限制。

處理陣列資料類型

PostgreSQL 支援各種內建和 UDT 類型的 array。從 Oracle GoldenGate 版本 26ai 開始,Oracle GoldenGate Extract 和 Replicat 支援下列類型的 PostgreSQL array 資料類型:

real、double、numeric 資料類型支援 NaN 和 Infinity/-Infinity 特殊數值。

如需有關支援特殊值之資料庫的資料類型詳細資訊,請參閱資料庫資料類型支援的特殊值。

初始載入和「CDC 擷取」都支援這些陣列類型。

備註:初始載入擷取不支援 time 資料類型的 PostgreSQL array。

支援限制

非支援的 PostgreSQL 資料類型

Oracle GoldenGate for PostgreSQL 不支援下列資料類型:

PostgreSQL 支援的物件和作業

表格、視觀表及具體化視觀表

要包含在擷取和傳遞中的表格必須符合下列需求,而且必須只包括列在支援的 PostgreSQL 資料類型下的資料類型。

限制

序列和識別資料欄