开发者社区 > PolarDB开源 > PolarDB 分布式版 > 正文

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

展开
收起
1690597420665210 2023-12-12 15:09:10 64 0
2 条回答
写回答
取消 提交回答
  • 面对过去,不要迷离;面对未来,不必彷徨;活在今天,你只要把自己完全展示给别人看。

    在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为你的表名。

    2023-12-13 14:18:35
    赞同 展开评论 打赏
  • 您在将 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. 自定义解决方案:根据您的具体需求,您可能需要编写自定义代码来捕获和处理数据变更事件,例如编写触发器、函数或存储过程等来记录变更日志或发送通知。

    2023-12-12 21:25:17
    赞同 1 展开评论 打赏

PolarDB 分布式版 (PolarDB for Xscale,简称“PolarDB-X”) 是阿里云自主设计研发的高性能云原生分布式数据库产品,为用户提供高吞吐、大存储、低延时、易扩展和超高可用的云时代数据库服务。

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载