Как вызвать сценарий ODI из командной строки и дождаться его выполнения

Я хотел бы вызвать сценарий ODI из командной строки и дождаться его завершения. Я использую ODI 12c и установил автономный агент. Я уже узнал, что вы можете использовать команду startcen.cmd, и она работает для меня. Единственная проблема в том, что cmd не ждет выполнения сценария. Любые предложения для достижения чего-то подобного?

Мой .bat-файл выглядит так:

cd C:\Oracle\Middleware\Oracle_Home\user_projects\domains\base_domain\bin
call startScen.cmd "-INSTANCE=CITestAgent" MAPPING 1_0_0 GLOBAL "-SESSION_NAME=TEST_RUN" "-AGENT-URL=http://localhost:20910/oraclediagent"
cd C:\Users\Redekera\documents\testFiles
"C:\Users\REDEKERA\Documents\instantclient_19_3\sqlplus.exe" db_user/pw@db/scheme @run_tests_lieferschein.sql

После этой команды я хотел бы запустить sql через sql * plus, который должен дождаться завершения сценария.

Спасибо за помощь ребята :)


person Aaron R.    schedule 11.10.2019    source источник
comment
Что ты этим имеешь ввиду ? почему бы вам не добавить его в пакет? После этой команды есть еще одна, которая должна дождаться завершения сценария.   -  person Moudiz    schedule 11.10.2019
comment
ну, в качестве начала, вы можете сказать cmd подождать определенное время timeout /t 30, а затем по истечении времени начать выполнение sql plus.   -  person Moudiz    schedule 11.10.2019
comment
@Moudiz уже думал об этом, но я не думаю, что это правильное решение. Я не знаю, как долго должен выполняться сценарий, зависит от сценария, который я хочу вызвать, и объема данных...   -  person Aaron R.    schedule 11.10.2019
comment
Привет @AaronR. Какая ОС стоит на машине, где нужно запускать командные строки?   -  person F.Lazarescu    schedule 14.10.2019
comment
Привет @F.Lazarescu Windows   -  person Aaron R.    schedule 14.10.2019


Ответы (2)


По умолчанию openscen.cmd будет ждать завершения выполнения. Это можно изменить с помощью параметра -ASYNC=yes, чтобы запустить выполнение асинхронно. В этом случае он вернет номер SESSION, который полезен для проверки статуса выполнения.

person JeromeFr    schedule 15.10.2019
comment
Вы правы, startScen.cmd ожидает окончания выполнения. - person Aaron R.; 15.10.2019

Если вы хотите, чтобы вторая команда выполнялась только в случае успешного завершения первой:

execute scenario command && sql*plus command

Извлечено из здесь

Основная идея — знак «&&»!

person F.Lazarescu    schedule 14.10.2019
comment
также хорошая идея в сочетании с первым ответом, но как выглядит пакет, когда вам нужно сменить каталог между двумя командами? - person Aaron R.; 15.10.2019
comment
Cd изменить каталог && выполнить команду senario && изменить каталог && команда sql*plus - person F.Lazarescu; 15.10.2019