首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Oracle DMS每次显示整行

AWS Oracle DMS每次显示整行
EN

Stack Overflow用户
提问于 2022-05-10 14:08:01
回答 1查看 51关注 0票数 0

我有一个带有S3目标的DMS配置的Oracle实例。满载后,我正在进行复制,当我用新值更新一行时,创建的DMS文件只显示那些已更新的列,但我希望整个行处于数据库中的当前状态。

例子: client_id、client_name、年龄

然后我将Johns的年龄更新为47岁,我希望DMS看起来是这样的:\x{e76f}\x{e76f}

但是,我收到的文件如下所示:

*···奥斯( DMS_TIMESTAMP )·奥斯维特(DMS_TIMESTAMP)·维特( client_id )·维勒( client_name ):年龄

根据文档,DMS行应该表示行的当前状态,但是我的所有不是主键的列似乎都丢失了,尽管数据库中的行有正确的值。我缺少配置了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 15:25:32

我遗漏了文档的一部分,该文档解释说,如果您想要一个行的所有列的值,则需要将以下内容应用于表:

代码语言:javascript
复制
alter table table_name ADD SUPPLEMENTAL LOG DATA (all) columns';

由于我需要将它应用于模式中的所有表,所以我创建了这个循环来应用它。

代码语言:javascript
复制
BEGIN
    FOR I IN (
    SELECT
        table_name,
        owner
    FROM
        ALL_TABLES
    WHERE
        owner = 'SCHEMA_OWNER'
) LOOP
    -- Print table name
    BEGIN
    DBMS_OUTPUT.PUT_LINE('Attempting to alter ' || I.table_name || ' at ' || current_timestamp);
    EXECUTE IMMEDIATE 'alter table SCHEMA_OWNER.' || I.table_name || ' ADD SUPPLEMENTAL LOG DATA (all) columns';
    EXCEPTION
    WHEN OTHERS THEN 
        DBMS_OUTPUT.PUT_LINE(I.table_name || ' alteration failed at ' || current_timestamp);
    END;
END LOOP;
END;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72187898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档