Другими словами, то, что JDBC драйвер получить не может, модуль знаний реверса получить сможет. Должен смочь.
Рассмотрим, как же работает модуль знаний реверса. Для этого я создам копию одной из существующих моделей, и включу у нее режим использования модуля знаний реверса и последовательно, в картинках, расскажу, что происходит.
Шаг 1: создаем копию модели. Назовем ее, например, так:
Как обычно, для модели необходимо указать логическую схему, к которой модель будет принадлежать.
Шаг 2: включаем режим выборочного реверса:
на картинке обозначены:
- выбранный тип реверса;
- контекст, который необходимо использовать для реверса;
- агент, используя которой будет выполнен реверс. Этот пункт очень помогает в тех случаях, когда вам необходимо получить данные с тех серверов БД, доступа к которым из ODI Studio нет, но этот доступ есть у агента;
- выбор типов объектов, информация о которых будет получена в ходе реверса;
- маска, используя которую будут фильтроваться имена объектов, т.е. все объекты, которые удовлетворяют условию object_name like 'OWB%' попадут в реверс;
- выбор модуля знаний реверса. В данном списке выбора все модули знаний всех проектов будут отображены в виде Название_МодуляЗнанийРеверса.Имя_Проекта.
Так же, при необходимости, можно задать значения фактических параметров модуля знаний реверса.
Шаг 4: запускаем.
Запустить реверс можно двумя способами. Первый, выбрать команду Reverse Engineer на вкладке модели:
Второй, выбрать ту же команду в контекстном меню модели, в дереве моделей:
Логика подсказывает, что результаты запуска одного и того же процесса из двух разных мест должна совпадать. В общем-то, так и есть. Процентов на 80. На самом деле получается несколько разные вещи.
Запуск из вкладки редактирования модели:
выбор агента недоступен.
Запуск из контекстного меню:
выбор агента доступен.
Как говорилось когда-то в одном анекдоте - этого понять нельзя, это нужно просто запомнить.
Шаг 5: выполнение реверса.
Выполнение реверса выглядит ровно так же, как и выполнение любой другой процедуры ODI. То есть, идем на вкладку Оператора и ищем сессию с тем же именем, что и наша тестовая модель:
Посмотрим, что из себя представляет этот процесс более подробно. Наша сессия начинается с команды odiReverseResetTable с параметрам Model равным 7110.
Фактическое значение параметра - 7110 - это внутренний идентификатор созданной мною модели в репозитории.
Эта команда нужна для того, чтобы подготовить внутренние таблицы рабочего репозитория, с названиями, начинающимися с SNP_REV_ для приема результатов реверса из другой СУБД.
Рассмотрим, как это выглядит, например, для получения информации о таблицах:
В верхней части картинки, в разделе Source Code вы видите обычный Select, выбирающий из служебных представлений все имена таблиц, удовлетворяющих заданным критерием, ужимающий комментарий для таблицы до 250 символов и т.п.
В нижней же части, в разделе Target Code находится команда вставки данных в таблицу для таблиц под названием SNP_REV_TABLE.
Такой же процесс происходит и для остальных метаданных: представлений, партиций и субпартиций, синонимов и т.п.
Заканчивается реверс также вызовом специальной команды OdiReverseSetMetaData -MODEL=7110:
Шаг 6: ищем результаты.
Последний шаг, чтобы убедиться, что все прошло правильно, достаточно очевиден. После проведенного реверса модели, дерево моделей необходимо обновить, и тогда вы сможете увидеть что-то похожее на следующий скриншот:
Остается добавить только несколько слов относительно того, как можно разработать модуль знаний реверса самостоятельно, помимо тех общих принципов, которые я уже описывал.
Теоретически, для этого не должно быть сложностей, так как команды очистки таблицы реверса, установки (фактически, преобразования данных из таблицы реверса в таблицы модели в репозитории) и получения метаданных доступны как для использования в модулях знаний, так и для использования в пакетах:
Вот и все на сегодня.
Комментариев нет:
Отправить комментарий
Примечание. Отправлять комментарии могут только участники этого блога.