Oracle Расширенные очереди по сравнению с небольшой Oracle таблицей базы данных - PullRequest
0 голосов
/ 31 января 2020

Я ищу простой способ связи между двумя базами данных, в настоящее время существует связь базы данных между обеими базами данных.

Я хочу обработать задание в базе данных 1 для пакета записей (код пакета для каждой партии записей), после завершения процесса в базе данных 1 и обработки всех партий записей. Я хочу, чтобы база данных 2 видела, что база данных 1 обработала несколько пакетов (кодов пакетов), выполнив запрос к таблице oracle или к расширенной очереди Oracle, которая находится либо в базе данных 1, либо в базе данных 2.

База данных 2 будет обрабатывать партии записей, находящихся в базе данных 1, через связанное представление базы данных, используя каждый код пакета, и обновлять статус этого пакета до завершения.

Я хочу иметь возможность обновить Oracle Advanced Таблица очереди или базы данных с номером партии, статусом выполнения ('S' запущен, 'C' завершен), датой статуса

Имя таблицы.

batch_records

Столбцы таблицы

Batch No,
Status,
status date

Вопросы:

  1. Это можно сделать с помощью простой таблицы базы данных, а не сложной Oracle Расширенной очереди ?

  2. Можно ли обновить таблицу по ссылке в базе данных?

  3. Есть ли примеры этого?

1 Ответ

2 голосов
/ 31 января 2020

Чтобы ответить на ваш вопрос первым:

  1. да, я верю в это
  2. да, это возможно. Но если задействовано много строк, это может быть довольно медленным
  3. , вероятно,

Ссылка на базу данных - это способ связи между двумя базами данных. Если эти задания выполняются в базе данных 1 (DB1), я бы посоветовал вам сохранить ее там - в DB1. Выполнение stuff по ссылке в базе данных требует различных проблем. Может быть медленным, вы не можете сделать все по ссылке на базу данных (например, большие объекты). Одним из вариантов является планирование работы (используя DBMS_SCHEDULER или DBMS_JOB (что вполне подходит для простых вещей)). Позвольте процедуре поддерживать статус задания в некоторой таблице (это будет «простая таблица» из вашего первого вопроса) в DB1, которую будет читать DB2.

Как? Сделайте это напрямую или создайте материализованное представление, которое будет обновляться по расписанию (например, каждое утро в 07:00) или по требованию (не очень хорошая идея) или при фиксации (как только процедура DB1 выполнит свою работу и передаст изменения, материализованное представление будет обновлено).

Если строк не так много, я, вероятно, прочту таблицу состояния DB1 напрямую и подумаю о других вариантах позже (при необходимости).

...