Назад | Перейти на главную страницу

задание sqlldr не выполняется через Autosys

У меня есть сценарий оболочки, который при запуске вручную или через Cron выполняется нормально и успешно загружает файл с разделителями с помощью sqlldr в базу данных.

Однако через Autosys сценарий выполняется, sqlldr сообщает, что он был успешным, однако данные никогда не загружаются в базу данных.

Кто-нибудь когда-нибудь сталкивался с этим раньше с комбинацией sqlldr / Autosys, и если да, знает обходной путь / исправление?

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

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

SQLLDR должен создать файл LOG и файл BAD отклоненных записей, которые могут дать подсказку

Откуда точка "oraenv". oraenv линия. Может быть, при запуске из autosys pwd отличается?

Попробуйте поставить "set -x" в скрипт после! / Bin / sh в вашем скрипте.

Разве это не должно быть! # / Bin / sh, а не! / Bin / sh

Autosys должна иметь возможность создавать журналы STDERR / STDOUT. Вы можете их опубликовать?

Это сценарий

!/bin/sh
PATH=$PATH:/usr/local/bin/:/usr/java/jre1.6.0_17/bin/

export ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_2
export ORACLE_SID=orcl
export ORAENV_ASK=NO
. oraenv

sqlldr system/123456@orcl control=test.ctl,DATA=test.dat,ERRORS=100000000,MULTITHREADING=true,BAD=test.bad

cat test.bad >> rejected.txt

Это правильный синтаксис для работы через CRONTAB или любую другую систему планирования для sqlldr

экспорт LD_LIBRARY_PATH = / oracle / ora9 / lib: $ LD_LIBRARY_PATH export ORACLE_HOME = / oracle / ora9 export PATH = / oracle / ora9 / bin: $ PATH

sqlldr userid = user / password @ db \ control = / Path / to / control / file.ctl \ data = / give / datafile / path / datfile \ log = то же самое для журнала \ bad = то же самое для плохих ошибок = 999