Событийное программирование в PL / SQL - PullRequest
2 голосов
/ 16 февраля 2011

У меня есть две системы PL / SQL, находящиеся в двух отдельных базах данных.SystemA нужно будет заполнить таблицы SystemB.Это, вероятно, будет сделано через канал данных.Каждый раз, когда набор записей вставляется в таблицы SystemB, должен выполняться процесс в SystemB.Я мог дождаться завершения SystemA и затем запустить скрипт для начала обработки в SystemB, но, поскольку SystemA могла тратить много часов на обработку и затем заполнение SystemB, я бы предпочел, чтобы SystemB обрабатывал каждый набор записей, как только они становятся доступными (каждыйset может быть обработан независимо от других, так что это должно работать нормально).

В чем я не уверен, так это в том, как я могу выполнять даже управляемое программирование в PL / SQL.Мне нужно, чтобы SystemA уведомляла SystemB о том, что набор готов к обработке.Моя первая идея состояла в том, чтобы иметь специальную таблицу «событий» в SystemB, а затем, когда SystemA заканчивает набор, она вставляет в таблицу «событий» и при вставке есть триггер, который запускает процесс (и процесс может быть длинным).возможно 5-10 минут на процесс) в SystemB.У меня нет достаточного опыта с триггерами в Oracle, чтобы знать, является ли это установленным способом сделать это, ИЛИ, если есть лучший механизм.Предложения?Подсказки?Совет?

Ответы [ 2 ]

6 голосов
/ 16 февраля 2011

Использовать Oracle Advanced Queuing; это предназначено для этого. Я полагаю, что вам все равно придется установить связь с базой данных между двумя системами (в данном случае от B до A, чтобы использовать очередь на A).

2 голосов
/ 16 февраля 2011

Да, Oracle Advance Queues или даже наличие A для передачи почтенного задания Oracle в B. было бы лучше.

И, если вашему процессу потребуется полная репликация данных из A в Bтогда вы можете захотеть выглядеть как процесс Oracle Streams, чтобы скопировать данные и затем выполнить обработку.

...