Добро пожаловать в мир синхронизации, это сложно сделать правильно.
Я синхронизирую 1,35 млн записей каждые два часа между Oracle и SQL Сервером. К счастью, приходится иметь дело только со вставками. Я использую дату в одном из столбцов, чтобы отслеживать, какие записи были скопированы. Когда копирование завершено, я удаляю записи <= дата последнего копирования. <strong>Truncate вызовет потерю данных, как вы описали.
Если у вас есть разделы, вы можете создать ежедневные разделы. Новые данные будут go в новый раздел, вы скопируете данные предыдущего дня на удаленный компьютер, а затем обрежете раздел. К сожалению, у нас нет Oracle Enterprise Edition (необходимого для разбиения на разделы), не говоря уже о разбиении на разделы, поэтому я не могу дать вам подробностей о том, как это сделать.