Я работаю над внутренним решением ETL, от db1 (Oracle) до db2 (Sybase). Нам нужно перенести данные пошагово (Change Data Capture?) В db2.Как определить, какая запись была удалена эффективным способом?
Я только прочитал доступ к таблицам, поэтому я не могу создать таблицу или триггер в Oracle db1.
Задача, с которой я столкнулся, - как определить удаление записей в Oracle?
Решение, о котором я могу думать, заключается в использовании дополнительного автономного/встроенного db (например, derby, h2 и т. Д.). Этот db содержит 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)
Я думаю, что это будет очень дорогой операцией, когда объем данных очень велик. У вас есть идея лучше сделать это?
Спасибо.
+1 Streams Change Data Capture - это, безусловно, самое легкое касание исходной базы данных, но вам придется делать одноразовое изменение таблиц для добавления дополнительных протоколов. – dpbradley
В любом случае мне не разрешено изменять/добавлять исходную таблицу. Собственность источника db принадлежит другой компании. – janetsmith