Я работаю над собственным решением 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)
Я думаю, что это будет очень дорогая операция, когда объем данных станет очень большим. У тебя есть идея получше?
Спасибо.