Я разрабатываю веб-приложения, это веб-приложение будет использовать MySQL.
Теперь мне нужно реплицировать базу данных Oracle моего клиента в MySQL, будут задействованы только несколько таблиц .. таблица может содержать до 2-3 миллионов строк.
У меня есть только привилегия SELECT для этого Oracle, поэтому не просите меня устанавливать какие-либо службы на машине Oracle. Однако у меня есть полный контроль над MySQL.
Репликация только в одну сторону (из Oracle в MySQL). Я могу написать простой скрипт для усечения таблицы MySQL и ее повторного заполнения каждую ночь, но я думаю, что это очень неэффективно, должен быть способ лучше.
Могу ли я использовать какие-нибудь бесплатные инструменты? О дорогостоящей системе репликации баз данных не может быть и речи.
Если вы все равно разрабатываете веб-приложение, я бы также создал скрипт php / asp / something, который запрашивает таблицы oracle и импортирует данные, которые вы хотите, в mysql - каждые X минут / часов (cron или служба Windows).
Вы можете отслеживать данные, которые были импортированы при последнем запуске, сохраняя последний импортированный элемент (уникальный ключ таблицы oracle ('id')) в «специальной» таблице mysql, которая укажет, где вы остановились, и данные, которые теперь необходимо импортировать.
Похоже, вы можете быть ограничены усечением и заполнением, используя только SELECT.
Есть ли в записях временная метка, чтобы вы знали, когда они в последний раз менялись?
Если у вас нет другого доступа, я не думаю, что они захотят настроить что-то вроде функции Oracle Change Data Capture. Если бы они настроили это для вас, вы могли бы сделать начальный дамп таблицы, затем постепенно читать изменения из связанной таблицы изменений, а затем очистить таблицу изменений, когда вы закончили. Очень уж катить свой. Введение в CDC находится здесь: ссылка на сайт .. Вам просто нужно будет выбрать доступ к таблице изменений, связанной с вашей таблицей Oracle, и возможность удалить изменения после их применения к базе данных.
Продукт, который я использовал ($$$, поэтому я не буду вдаваться в подробности, но это продукт, связанный с Oracle Golden Gate), сначала выполняет контрольную сумму в исходных и целевых строках, а затем копирует их в разные строки. Это требует некоторой вычислительной мощности для генерации контрольных сумм, но может значительно уменьшить объем данных, перемещаемых по сети.