【发布时间】:2017-02-27 10:22:23
【问题描述】:
我有一个运行可执行文件(bash 脚本)的 Oracle JOB。 这个脚本自己运行 SQLPLUS,它运行一个 PACKAGE
检查一下
function run_pkg_load_svr() {
if [ "$1" != "" ] && [ "$2" != "" ];
then
sqlplus -l -s $1/$2 <<EOF
WHENEVER SQLERROR EXIT 99;
WHENEVER OSERROR EXIT 88;
BEGIN
PKG_LOAD_SVR.SP_MAIN();
END;
/
EOF
pkg_retcode=$?
echo $DATE_LOG >> upload.log
echo "PKG EXIT CODE: " $pkg_retcode >> upload.log
fi
}
所以,如果我运行 JOB,它的退出代码 (PKG) 是 1
但是,如果我手动运行包或脚本,它可以工作
STATUS is SUCCEEDED在日志事件中
怎么可能有这样的问题?
此外,当 SP_MAIN 启动时,我还会填充一个 log_table.. 即使这样也行不通
【问题讨论】:
-
可能是执行脚本的oracle账号环境设置不同,由于某种原因无法运行sqlplus。您需要捕获更多诊断信息。顺便说一句,为什么要托管一个调用 SQL*Plus 的 shell 脚本,该脚本连接回(大概)同一个数据库?这似乎有点过于复杂,更不用说不安全了,因为您将密码作为纯文本传递。
-
能否添加您使用的 Oracle Job 调用?
标签: oracle bash plsql scheduled-tasks jobs