воскресенье, 31 октября 2010 г.

Переносим объект из одного проекта ODI в другой.

Созданная в прошлом посте копия проекта W_Project1 поможет провести эксперимент по переносу объектов из одного проекта в другой. Если мы попробуем использовать переменную Variable1 из проекта W_Project1 в пакете проекта W_Project2 Дизайнер сообщит об ошибке:

пятница, 29 октября 2010 г.

Дуплицируем папку ODI или весь проект.

Что происходит при дуплицировании единичных объектов ODI примерно ясно. Создается копия того интерфейса или процедуры или пакета, к которому применена команда Duplicate.

А что произойдет, если сделать дубликат папки ODI или даже всего проекта? В зависимости от количества объектов в папке или в проекте это может занять разное время (иногда достаточно большое).

среда, 27 октября 2010 г.

Создание временной таблицы через ODI интерфейс.

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


Как создать временную таблицу в интерфейсе ODI.
Создайте новый интерфейс, задайте его имя, выберите контекст оптимизации и выберите подходящую схему для установленной опции Стейджинговая область отлична от целевой области (Staging Area Different From Target).

понедельник, 25 октября 2010 г.

Быстрый и легкий путь создания интерфейсов в ODI.

Сегодня я хочу опубликовать перевод статьи "Faster and Easiest way to design Interfaces". Описанный там способ позволяет быстро создавать интерфейсы, имея только модель данных целевых таблиц. Хорошо применять этот метод, когда необходимо загрузить данные из систем источников в хранилище данных без преобразований.


1. Определите папку с моделью, в которой уже есть модели целевых таблиц. По нажатию правой кнопки мыши на модели выберите команду генерации загрузочных интерфейсов (Generate Interface In)

суббота, 23 октября 2010 г.

Поведение переменных в процедурах и интерфейсах ODI.

Сегодня хочу рассказать о том, как ведут себя переменные в процедурах и интерфейсах. Напомню, что значение переменной в процедуре и интерфейсе может только использоваться в каких-то командах. Установить значение переменной ODI в интерфейсе нельзя.

четверг, 21 октября 2010 г.

Быстрое редактирование параметров запуска сценария ODI.

Сегодня хочу рассказать о том, как можно быстро изменить параметры запуска сценария из пакета Oracle Data Integrator.

Рассмотрим пример запуска сценария из проверочного пакета.
Общие свойства объекта OdiStartScen:

вторник, 19 октября 2010 г.

Изучаем поведение переменных ODI.

Как я уже рассказывал, в пакете переменные могут быть объявлены, обновлены, им может быть установлено значение или они могут быть использованы для сравнения, с последующим изменением порядка выполнения пакета.

Недавно встретилась ситуация, когда в пакете была такая последовательность для одной переменной: Декларация -> Обновление -> Декларация.

И я решил проверить, это просто ошибка, или в этом есть какой-то смысл?

воскресенье, 17 октября 2010 г.

Удаление временных $ таблиц.

Сегодня небольшая заметка по мотивам вот этой записи, посвященная удалению временных таблиц из БД.

Задачи по обработке данных, при которых используются стандартные модули знаний (knowledge modules) ODI предполагают создание временных таблиц и их использование в процессе ETL преобразований. Например, модуль загрузки данных из файла в таблицу, создаст в БД временную таблицу С$_MY_FILE_DATA, загрузит "сырые" данные туда, и уже после этого перенесет данные в таблицу MY_FILE_DATA.

суббота, 16 октября 2010 г.

Организационное.

Приветствую коллеги.

Немного организационных новостей. В блоге появилась панель ссылок на страницы блога. Панель сейчас располагается в верхней части блога. Первая страница - информация о блоге и о том, как со мной связаться. Пожалуйста, если вас интересует какая-то информация об ODI и я смогу в этом помочь - обращайтесь.
Там же находится и дисклеймер.
Вторая ссылка - на страницу поиска. Поиск по статьям этого блога и другим сайтам, связанным с тематикой Oracle Data Integrator. Поиск все еще в процессе настройки, но по данному блогу уже ищет.
Ну и подписывайтесь на обновления через RSS. До конца года постов в блоге хватит.

пятница, 15 октября 2010 г.

Машины хранилищ данных.

Довольно старая статья об архитектуре специализированных программно-аппаратных комплексов для хранилищ данных.

Результаты исследований и разработок позволили в начале 1990-х годов сделать такой вывод: будущее принадлежит параллельным системам для организации баз данных, создаваемым на базе серийных процессоров, памяти и дисков. Каждый такой процессор может работать только со своей областью базы данных и обмениваться сообщениями с другими процессорами через сетевое соединение или общую память. Это позволяет разбивать большие таблицы на меньшие и проводить их обработку параллельно.

И далее полная версия статьи Александра Александрова опубликованная в Открытых Системах.

четверг, 14 октября 2010 г.

Отправляем письмо из ODI (улучшенная версия).

Пакет SEND_MAIL, описанный в предыдущем сообщении меня устраивал всем. Всем, кроме невозможности отправить многострочное письмо. В принципе, отправить две и более строки из ODI совсем не сложно. Вставляем в пакет odisendmail компоненту, где пишем все, что прийдет в голову:


Но хотелось бы, все же, использовать для этой цели пакет, а вернее, сгенерированный из пакета сценарий.

вторник, 12 октября 2010 г.

Как присвоить значение или сравнить 2 переменные ODI.

Сегодня хочу рассказать об одной особенности присваивания определенного значения переменной в пакете. Значение переменной присваивается из строкового поля Value окна свойств переменной:


В этом пакете используется две переменные, для первой переменной устанавливается значение 10, для второй переменной попробуем установить значение, равное значению первой переменной. Затем обе переменных отобразим с помощью raise exception метода:


Как видно, значение второй переменной - строка #Variable1, а вовсе не строка 10. Для того, чтобы в пакете присвоить значение одной переменной другой переменной, необходимо указывать полное наименование, включая проект, или ключевое слово Global для глобальных переменных.

Тот же подход необходимо использовать если необходимо сравнить значение двух переменных:

воскресенье, 10 октября 2010 г.

Отправляем письмо из ODI.

Отправлять письма из ODI не сложно. Для этого есть специальный компонент, который называется OdiSendMail:


Этот компонент позволяет выслать письмо на заданные адреса, указав при этом адрес почтового сервера, имя, от которого отправляется письмо, тему и тело письма, приложив, при необходимости, один или несколько файлов в аттачмент.

Использование этого компонента в случаях отладки ETL процессов позволяет ничего дальше на этот счет не придумывать. Разработчик вставляет отправку письма себе, сам формирует тело письма, заголовок и, возможно, прикладывает файл.

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

пятница, 8 октября 2010 г.

Удаление потерянных данных в SNP_EXP_TXT.

Приветствую.

Сегодня я хочу опубликовать перевод статьи, посвященной удалению данных из одной из таблиц репозитория ODI. Почему возникла такая мысль и какие именно данные будут удаляться читайте ниже.


Привет народ. Есть небольшой "баг" в ODI, который заключается в том, что не очищается таблица SNP_EXP_TXT, когда удаляется "родительская" запись.

Так происходит потому, что в модели репозитория нет внешнего ключа между SNP_EXP_TXT и ее несколькими родительскими таблицами, именно потому, что таких таблиц несколько.

среда, 6 октября 2010 г.

Устанавливаем значения переменных для сценария.

Недавно случайно обнаружил одну особенность использования сценариев, которой спешу поделиться.
Итак, если мы выберем некий сценарий, сгенерированный из интерфейса, пакета или процедуры, мы увидим, что для сценария есть три подчиненных ветки в дереве объектов:

понедельник, 4 октября 2010 г.

Создаем и используем функцию PL/SQL из ODI.

Третий пост на тему использования процедур и функций PL/SQL в Oracle Data Integrator. На этот раз я попробую создать функцию PL/SQL сам, чтобы использовать ее вместо постоянной процедуры и функции СУБД.

Зачем именно в ETL коде? Это, как я уже указывал, уменьшает объем передаваемого на деплой кода, и, самое главное, это удобнее при разработке.
Ведь после каждого изменения таблицы, которая используется в процедуре или функции данная процедура, а то и весь модуль, в котором она находится, становится невалидной в СУБД Oracle. А пересоздание процедуры при каждом запуске сценария позволяет не затрагивать своими экспериментами других пользователей.

суббота, 2 октября 2010 г.

Один сценарий ODI - одна сессия в СУБД Oracle.

Предыдущий пост, посвященный получению в переменную ODI результата выполнения некоторой PL/SQL процедуры через значение переменной модуля(Oracle package) натолкнул меня на мысль проверить, как этот механизм будет работать при одновременном выполнении нескольких сценариев.

Если исходить с точки зрения того, как механизм использования модулей реализован в СУБД Oracle, то получалось, что, в случае выделения каждому сценарию своей собственной сессии, для каждого сценария мы будем иметь отдельную область памяти, в которую конкретизируется (instantiated) модуль, и, таким образом, в каждом модуле мы получим свое значение переменной.

пятница, 1 октября 2010 г.

Описание архитектуры Oracle Data Integrator.

Хорошая статья об архитектуре ODI с краткими описаниями и схемами взаимодействия компонентов этого сервера приложений.
Архитектура Oracle Data Integrator: краткий технический обзор

2010-10-01.


Менеджер Безопасности - Концепция и использование.
Security Module – Main concepts and use
Для чего необходим и как использовать Менеджер Безопасности (Security Manager) ODI. Как назначить права на разные объекты разным пользователям или разным ролям.
Дата публикации: 2010-10-06, Комментариев: 2


Jython в ODI для начинающих.
Jython’s Beginner Guide for ODI
Большое количество примеров использования Jython для работы со строками, файлами, массивами, командами ОС, SQL скриптами и т.п. Есть ссылки на документацию по Jython.
Дата публикации: 2010-10-15, Комментариев: 20


Послать результат SQL по почте.
Send SQL by Email
Отправка результатов выполнения SQL запроса в виде текста письма с помощью одной процедуры из двух шагов.
Дата публикации: 2010-10-19, Комментариев: 5


Преобразование временного ODI интерфейса в обычный.
ODI snippets: Converting a temp interface to a regular interface
Три простых шага, которые необходимо сделать чтобы преобразовать интерфейс заполнения временной таблицы (т.н. Желтый интерфейс) в постоянный интерфейс для заполнения целевой таблицы в БД.
Дата публикации: 2010-10-31, Комментариев: 0


ODI в примерах от Oracle.
ODI 11g: Oracle by Example
Список занятий, выложенных в разделе Oracle by Example по Oracle Data Integrator.
Дата публикации: 2010-10-31, Комментариев: 0


ODI 11g выделенный агент как Windows сервис.
ODI 11g standalone agent as a windows service
Описание проблемы, согласно которой установить агент ODI 11g как сервисную службу Windows можно только если у вас есть лицензия на Oracle Process Manager and Notification Server. Один из возможных путей решения данной проблемы - использование другой Java обертки - Tanuki Java Service Wrapper.
Дата публикации: 2010-10-19, Комментариев: 0


ODI: Timestamp с учетом локального времени и переходами на зимнее/летнее время.
Oracle Data Integrator (ODI): Timestamp with local timezone and daylights saving time
Описаны особенности (на примерах) настройки ODI для работы с типом данных timestamp с учетом временных зон.
Дата публикации: 2010-10-16, Комментариев: 2