sqlldr作业没有运行Autosys

我有一个shell脚本,如果手动运行或通过Cron执行正常,并使用sqlldr成功地将分隔文件加载到数据库。

然而,通过Autosys脚本执行,sqlldr表示它是成功的,但是数据从未真正加载到数据库中。

有没有人曾经经历过这与sqlldr / Autosys组合,如果是这样,知道一个解决方法/修复?

可能是一堆原因。 我经历的一个情况是,在一个批处理作业中,其中一个启动脚本被绕过,LANG环境variables未设置,这影响了数据库连接的语言设置,包括默认的date格式/语言,这意味着logging是因为date无效而被拒绝。

不太模糊的可能与path有关(找不到数据文件,控制文件)或安全相关(数据库function可能试图loggingterminal)。

SQLLDR应产生一个拒绝logging的LOG文件和BAD文件,这可能会提示

这是剧本

!/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 

哪里是“oraenv”被点缀从。 oraenv线。 难道是从autosys运行时,pwd是不同的?

尝试在脚本中的!/ bin / sh之后放置“set -x”。

应该不是!!/ bin / sh而不是!/ bin / sh

Autosys应该能够生成一些STDERR / STDOUT日志。 你可以发布这些?

这是正确的语法运行通过CRONTAB或sqlldr的任何其他调度系统

export 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 =相同的log \ bad =相同的错误= 999