Frank Asked: 2009-06-01 21:49:15 +0800 CST2009-06-01 21:49:15 +0800 CST 2009-06-01 21:49:15 +0800 CST sqlldr 作业未通过 Autosys 运行 772 我有一个 shell 脚本,如果手动运行或通过 Cron 运行,它可以正常执行并使用 sqlldr 将分隔文件成功加载到数据库中。 但是通过 Autosys 脚本执行,sqlldr 说它是成功的,但是数据从未真正加载到数据库中。 以前有没有人使用 sqlldr/Autosys 组合遇到过这种情况,如果有,知道解决方法/修复方法吗? cron sql oracle 4 个回答 Voted Gary 2009-08-24T22:02:17+08:002009-08-24T22:02:17+08:00 可能是一堆原因。我遇到的一个问题是,在批处理作业中,其中一个启动脚本被绕过并且 LANG 环境变量未设置,这影响了数据库连接的语言设置,包括默认的日期格式/语言,这意味着记录是由于日期无效而被拒绝。 不太模糊的可能与路径相关(找不到数据文件,控制文件)或安全相关(数据库功能可能会尝试记录终端)。 SQLLDR 应该生成一个 LOG 文件和一个包含被拒绝记录的 BAD 文件,这可能会给出提示 shavin 2009-11-23T10:23:31+08:002009-11-23T10:23:31+08:00 这是脚本 !/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 gm3dmo 2009-12-27T14:17:20+08:002009-12-27T14:17:20+08:00 “oraenv”在哪里被 . oraenv 线。难道是从autosys运行时pwd不同吗? 尝试在脚本中的 !/bin/sh 之后将“set -x”放在脚本中。 那不应该是 !#/bin/sh 而不是 !/bin/sh Autosys 应该能够生成一些 STDERR/STDOUT 日志。你能把那些贴出来吗? Gagan 2010-04-07T01:59:39+08:002010-04-07T01:59:39+08:00 这是通过 CRONTAB 或 sqlldr 的任何其他调度系统运行的正确语法 导出 LD_LIBRARY_PATH=/oracle/ora9/lib:$LD_LIBRARY_PATH 导出 ORACLE_HOME=/oracle/ora9 导出 PATH=/oracle/ora9/bin:$PATH sqlldr userid=user/password@db \ control=/Path/to/control/file.ctl \ data=/give/datafile/path/datfile \ log=same for log \ bad=same for bad errors=999
可能是一堆原因。我遇到的一个问题是,在批处理作业中,其中一个启动脚本被绕过并且 LANG 环境变量未设置,这影响了数据库连接的语言设置,包括默认的日期格式/语言,这意味着记录是由于日期无效而被拒绝。
不太模糊的可能与路径相关(找不到数据文件,控制文件)或安全相关(数据库功能可能会尝试记录终端)。
SQLLDR 应该生成一个 LOG 文件和一个包含被拒绝记录的 BAD 文件,这可能会给出提示
这是脚本
“oraenv”在哪里被 . oraenv 线。难道是从autosys运行时pwd不同吗?
尝试在脚本中的 !/bin/sh 之后将“set -x”放在脚本中。
那不应该是 !#/bin/sh 而不是 !/bin/sh
Autosys 应该能够生成一些 STDERR/STDOUT 日志。你能把那些贴出来吗?
这是通过 CRONTAB 或 sqlldr 的任何其他调度系统运行的正确语法
导出 LD_LIBRARY_PATH=/oracle/ora9/lib:$LD_LIBRARY_PATH 导出 ORACLE_HOME=/oracle/ora9 导出 PATH=/oracle/ora9/bin:$PATH
sqlldr userid=user/password@db \ control=/Path/to/control/file.ctl \ data=/give/datafile/path/datfile \ log=same for log \ bad=same for bad errors=999