PostgreSQL:支持的数据类型、对象和操作

Oracle GoldenGate for PostgreSQL 支持捕获和交付受支持的 PostgreSQL 数据库版本的初始加载和事务处理数据。

除非本文档另有说明,否则 Oracle GoldenGate for PostgreSQL 支持对源数据进行映射、筛选和转换,以及将来自 Oracle GoldenGate 支持的其他源数据库的数据复制到 PostgreSQL 数据库。

支持的数据库

以下是 Oracle GoldenGate for PostgreSQL 支持的数据库和限制:

高可用性注意事项

Oracle GoldenGate 支持从 PostgreSQL 高可用性配置中捕获更改数据。此功能仅在 PostgreSQL 数据库版本 16 及更高版本中可用。更改数据捕获可以在主服务器上配置,也可以在高可用性设置中的任何只读备用服务器上配置。为了避免在故障转移时可能发生数据丢失和手动干预,Oracle GoldenGate 建议使用同步复制配置高可用性设置。

有关可能的数据丢失和手动干预方案的更多详细信息,请参阅 Oracle GoldenGate 过程中的 PostgreSQL 高可用性故障转移文档 ID 2818379.1 。

要从 PostgreSQL 高可用性设置配置 CDC 提取,请执行以下任务:1。提取可以配置为从主服务器或高可用性设置中的只读备用服务器捕获数据。

  1. 在一个节点(主节点或备用节点)上配置提取时,应在启动数据捕获之前,同时在高可用性设置中的所有其他节点上创建同名的复制插槽。

    1. 使用 REGISTER EXTRACT 命令在一个服务器上创建复制插槽(其中配置了提取),如以下示例所示:

      REGISTER EXTRACT exte
    2. 注册提取后,立即创建同名的复制插槽。必须在高可用性设置中的所有其他节点上显式使用相同的复制插槽名称。

      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 语句。注:重要说明 FOR REPLICATION SLOT CREATION ON STANDBY :在只读备用服务器上(使用 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

    在故障转移之前,如果提取配置为从其中一个节点(例如 node2)捕获数据,则提取参数文件将包含类似于以下内容的条目:

    USERIDALIAS node2

    如果发生故障转移,则主节点 (node1) 将关闭,辅助节点 (node2) 将成为新的主节点,因此有两种可能:

    1. 要继续从同一 node2 获取数据,请执行以下操作:

      • “提取”参数文件中不需要进行更改。

      • 重新启动提取。

    2. 要始终从其他节点捕获数据,请执行以下操作:

      • 更改提取参数文件以连接到所需的节点,例如 Node3。

        USERIDALIAS node3
      • 重新启动提取。

支持的 PostgreSQL 数据类型

以下是 Oracle GoldenGate 支持的 PostgreSQL 数据类型以及此支持的限制。

处理数组数据类型

PostgreSQL 支持各种内置和 UDT 类型的 array。从 Oracle GoldenGate 发行版 26ai 开始,Oracle GoldenGate Extract and Replicat 支持以下类型的 PostgreSQL array 数据类型:

real、double、numeric 数据类型支持 NaN 和 Infinity/-Infinity 特殊数值。

有关按支持特殊值的数据库列出的数据类型的详情,请参阅数据库数据类型支持的特殊值。

初始装入和 CDC 提取都支持这些数组类型。

注:初始加载提取不支持 time 数据类型的 PostgreSQL array。

支持的限制

不支持的 PostgreSQL 数据类型

Oracle GoldenGate for PostgreSQL 不支持以下数据类型:

PostgreSQL 支持的对象和操作

表、视图和实体化视图

要包括在捕获和传送中的表必须满足以下要求,并且只能包括支持的 PostgreSQL 数据类型下列出的数据类型。

限制

序列和标识列