gpt4 book ai didi

sql - 如何有效地找出哪条记录已被删除?

转载 作者:行者123 更新时间:2023-12-04 14:11:38 27 4
gpt4 key购买 nike

我正在研究内部 ETL 解决方案,从 db1 (Oracle) 到 db2 (Sybase)。我们需要将数据增量传输(Change Data Capture?)到 db2。

我只有表的读取权限,所以我不能在 Oracle db1 中创建任何表或触发器。

我面临的挑战是,如何检测Oracle中的记录删除?

我能想到的解决方案是使用额外的独立/嵌入式数据库(例如 derby、h2 等)。此数据库包含 2 个表,即 old_data、new_data。

old_data 包含来自 Oracle 中感兴趣的表的主键字段。

每次 ETL 过程运行时,new_data 表将填充 Oracle 表中的主键字段。之后,我将运行以下 sql 命令来获取已删除的行:

SELECT old_data.id FROM old_data WHERE old_data.id NOT IN (SELECT new_data.id FROM new_data)

我认为当数据量变得非常大时,这将是一个非常昂贵的操作。您对此有更好的想法吗?

谢谢。

最佳答案

哪个版本的甲骨文?如果你有 Enterprise Edition , 查看Oracle Streams .您可以从重做日志而不是数据库本身中获取删除内容

关于sql - 如何有效地找出哪条记录已被删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019865/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com