【发布时间】:2015-10-19 10:29:03
【问题描述】:
我正在使用以下脚本来创建带有 oracle 查询输出的文本文件。当我手动尝试时,脚本工作正常。但是当我将它放置到 crontab 时,它永远无法获得连接。通过自动化访问sqlplus有什么限制吗?
rm /export/home/oracle/out.csv
INC=0
while : ; do
INC=$(($INC+1))
if [[ "$INC" -eq 10 ]]; then
echo "Exit after multiple failed attempt to connect to the DB."
break
fi
sqlplus -s username/password@hostname.com:1552/servicename << EOF
set pagesize 10000
set feedback off
set heading off
set echo off
spool /export/home/oracle/out.csv
SET LINESIZE 10000
SET PAGESIZE 50
SELECT TRIM(COUNT(*)) FROM users;
SPOOL OFF
EXIT;
EOF
[[ -f "/export/home/oracle/out.csv" ]] && break
echo "Failed to connect to DB and retrying."
sleep 5
done
【问题讨论】:
-
你确定能找到sqlplus吗?这个 cron 作业使用哪个 shell?
-
sqlplus 在那里。当我通过控制台“./report.sh”运行时,相同的脚本工作正常,但仅在 crontab 中出现。两者都使用相同的用户。
-
能否将 crontab 的内容添加到您的问题中?
-
您的 PATH 环境变量在从 crontab 运行时可能会有所不同,当您指定 sqlplus 的完整路径时它是否有效?
标签: oracle shell crontab sqlplus