Любой способ вызвать пакет или интерфейс odi через базу данных oracle

Мне нужно выполнить пакет / сопоставление odi с помощью параметрической процедуры базы данных вместе с тем, что мне нужно зафиксировать статус пакета / сопоставления (Failed / Passed) в процедуре.

Версия ODI: 12c

Я пробовал указанный код, и он показывает прикрепленное сообщение об ошибке:  ** введите описание изображения здесь **


person Rajesh Kumar    schedule 15.05.2019    source источник


Ответы (1)


Сделать это можно в два этапа:

  1. Создайте процедуру plsql, которая будет запускать команду сценария / строки оболочки
  2. Команда line вызовет сценарий ODI карты.

Вы можете достичь первой точки с помощью читая это.

Процедура PL / SQL, выполняющая командную строку:

create or replace procedure host( cmd in varchar2 )
as
status number;
begin
dbms_pipe.pack_message( cmd );
status := dbms_pipe.send_message( 'HOST_PIPE' );
if ( status <> 0 ) then raise_application_error( -20001, 'Pipe error' );
end if;
end;
/

Во-вторых, это написано в документации ODI, в главе 7.3. .2 Выполнение сценария из командной строки.

person F.Lazarescu    schedule 16.05.2019
comment
Да, это в моем ответе ... прочтите это или скажите, что вам не нравится ... создайте процедуру, которая выполнит приведенный ниже оператор: (отрывок из ссылка) В системах UNIX: ./startscen.sh -INSTANCE =‹ ODIInstanceName ›‹scenario_name› ‹scenario_version› ‹context_code› [‹log_level›] [-AGENT_URL = ‹remote_agent_url›] [-ASYNC = yes | no] [-NAME = ‹local_agent_name›] [-SESSION_NAME = ‹session_name›] [-SESSION_NAME = ‹session_name] КЛЮЧЕВЫЕ СЛОВА = ‹keywords›] [‹variable› = ‹value›] * - person F.Lazarescu; 17.05.2019
comment
@RajeshKumar, пример уже в посте. Там вы можете увидеть код для создания процедуры. После его создания вы можете запускать такие команды: exec host('./abc.sh'); - person F.Lazarescu; 20.05.2019
comment
Почему я получаю сообщение об ошибке, когда пытаюсь создать указанную процедуру? - person Rajesh Kumar; 20.08.2019
comment
Так ошибка при сохранении процедуры? Не при запуске? - person F.Lazarescu; 20.08.2019
comment
Любая помощь по вызову команды odi package / os через процедуру Pl / sql? - person Rajesh Kumar; 20.08.2019
comment
Я уже пробовал это в базе данных Oracle, сообщение об ошибке прилагается выше. - person Rajesh Kumar; 20.08.2019
comment
ОБЪЯВИТЬ cmd VARCHAR2 (2000): = 'MKDIR TEMP4624D36'; номер статуса; начать dbms_pipe.pack_message (cmd); статус: = dbms_pipe.send_message ('HOST_PIPE'); if (status ‹› 0) then raise_application_error (-20001, 'Ошибка трубы'); конец, если; конец; этот блок работает нормально, но каталог не создается. - person Rajesh Kumar; 20.08.2019
comment
@RajeshKumar ах .. Я только что запутался .. извините, что я сказал, что это не процедура plsql, а процедура ODI .. Я запутался с другим вопросом. - person F.Lazarescu; 20.08.2019
comment
@RajeshKumar, вы уверены, что папка не создана? Возможно, пользователь, создающий папку, отличается от пользователя, с которым вы проверяете создание папки! - person F.Lazarescu; 20.08.2019