polardb 执行 supplemental log 报错[阿里云]

oracle切换为polardb,给表执行补全日志语句报错,
sql语句:alter table XXX add supplemental log data (all) columns;
数据库版本:PostgreSQL 14.9 (PolarDB 14.9.13.0 build 3bfdb65b) on x86_64-linux-gnu

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
=====这是一个广告位,招租中,联系qq 78315851====
1 条回复 A 作者 M 管理员
  1. 在Oracle切换为PolarDB后,执行补全日志语句报错的原因可能是由于PolarDB在Oracle切换为PolarDB后,执行补全日志语句报错的原因可能是由于PolarDB不支持ALTER TABLE语句中的ADD COLUMN子句。你可以尝试使用以下方法来解决这个问题:

    1. 创建一个新的表,结构与原表相同,但包含补全日志列。
    2. 将原表中的数据复制到新表中。
    3. 删除原表。
    4. 将新表重命名为原表的名称。

    以下是具体的SQL语句:

    -- 创建新表CREATE TABLE new_table AS SELECT * FROM old_table WHERE 1=0;-- 添加补全日志列ALTER TABLE new_table ADD supplemental log data (all);-- 将原表中的数据复制到新表中INSERT INTO new_table SELECT * FROM old_table;-- 删除原表DROP TABLE old_table;-- 将新表重命名为原表的名称ALTER TABLE new_table RENAME TO old_table;

    请根据实际情况替换old_tablenew_table为你的表名。

  2. 您在将 Oracle 切换到 PolarDB 后,尝试在表上执行 PostgreSQL 的补全日志语句 alter table XXX add supplemental log data (all) columns;,但遇到了错误。

    在 PostgreSQL 中,类似于 Oracle 的补全日志(Supplemental Logging)功能,可以使用逻辑复制(Logical Replication)来实现。然而,PolarDB for PostgreSQL 目前不支持逻辑复制功能,因此无法直接执行与补全日志相关的语句。

    如果您需要在 PolarDB 中实现类似 Oracle 补全日志的功能,可能需要考虑其他方法或工具来处理数据增量变化的监控和捕获。以下是一些备选方案:

    1. 使用外部工具:您可以考虑使用第三方工具或库,例如 Debezium、Liquibase、pgAudit 等,来实现数据变更的监控和捕获,并将其应用到您的工作流程中。

    2. 自定义解决方案:根据您的具体需求,您可能需要编写自定义代码来捕获和处理数据变更事件,例如编写触发器、函数或存储过程等来记录变更日志或发送通知。