Как мне синхронизировать две базы данных Oracle? - PullRequest
6 голосов
/ 14 сентября 2009

Я хочу создать проект, в котором требуется синхронизировать локальную базу данных с удаленной базой данных. Изменения, сделанные в локальной базе данных, должны быть отражены в удаленной базе данных. Это должно быть сделано синхронно. У меня есть приложение, которое делает операции CRUD на локальной базе данных, написанной на Java / JPA. Синхронизация должна быть запущена из кода Java. Я думал о триггерах на каждой таблице базы данных, которые будут поддерживать изменения в локальной базе данных. Но я сомневаюсь, что это безопасно или нет. После поиска в Google я обнаружил, что база данных oracle lite лучше всего синхронизирует две базы данных, но мне нужно быстро начать работу. Операционная система, которую я использую - Windows Xp. Размер базы данных составляет около 2 ГБ.

Я создал поток для достижения того же самого в Java, но по предложению я перезапустил тот же поток в контексте базы данных.

Ответы [ 3 ]

6 голосов
/ 14 сентября 2009

Прежде всего, я бы посоветовал вам пересмотреть свой дизайн. Самый простой способ воспроизвести ваши данные - это представления , как предлагается в этом SO . Вы можете создать ССЫЛКУ БАЗЫ ДАННЫХ между двумя вашими БД и создать представления на удаленном сайте, которые будут запрашивать локальную базу данных. Это был бы самый простой способ синхронизации в реальном времени (меньше кода, меньше обслуживания).

Если вы действительно хотите копировать данные синхронно, вам следует прочитать Руководство по репликации . Вы могли бы пойти с материализованными взглядами. Вам нужно будет определить материализованные журналы просмотра в ваших таблицах на главном сайте. На удаленном сайте вы создадите ON COMMIT REFRESH материализованных представлений .

2 голосов
/ 04 октября 2010

То, на что вы ссылаетесь, называется репликацией. Синхронизация это что-то другое.

Если у вас есть несколько устройств с требованием подмножества данных, например, региональному торговому представителю требуются только данные, отражающие область, которую он / она обслуживает, то Oracle Database Lite Mobile Server - это то, что вы ищете. По сути, у вас есть центральная база данных Oracle, и вы хотите, чтобы некоторые данные передавались клиенту. Этот клиент будет производить обновления / вставки / удаления на устройстве, а затем они будут синхронизироваться. Новая информация на сервере будет отправлена ​​на их устройство, а их изменения будут загружены на сервер. Вам потребуется разрешение конфликтов (выигрывает сервер / клиент ... Oracle Mobile Server также позволяет настраивать конфликты по индивидуальному заказу). Oracle Mobile Server также используется для удаленного предоставления вашего прикладного программного обеспечения и управления устройствами. Инструмент разработан так, что вам требуется только центральный администратор баз данных. Удаленные машины не требуют никаких действий типа DBA.

1 голос
/ 29 января 2010

Я обдумывал эту проблему в течение нескольких дней, так как нам нужно заниматься разработкой параллельно с QA, проводящим их тесты. У нас есть два отдельных экземпляра Oracle, но их синхронизация вручную была бы огромной болью. Я не администратор баз данных, поэтому, просто посмотрев на репликацию, я убежал в страхе.

Вместо этого я запустил Navicat для Oracle и (ab) использовал функцию Data Transfer - делает синхронизацию двух схем в физически отдельных базах данных довольно безболезненной. Довольно чертовски полезный инструмент! (Я не работаю на них, как их инструмент.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...