变量中的 SQLPLUS 值 - 在 crontab 中不起作用

变量中的 SQLPLUS 值 - 在 crontab 中不起作用

我正在尝试将 sqlplus 值存储到 Linux 中的变量中。

手动触发时脚本工作正常。但是当从 crontab 调用脚本时,变量中的值不会被存储。

代码:

#!/bin/ksh
~/.profile
v=`sqlplus -s <<!
<<DB details>>
select sysdate from dual;
!
`
echo "$v"

答案1

sqlplus从 crontab 条目运行可能会令人沮丧。你会得到一个非常稀疏的 PATH 变量,因为分叉出来的 shellcrond不会读取“rc”文件。

在你的“.profile”文件中你设置了ORACLE_HOME吗?您是否在 PATH 中包含 $ORACLE_HOME/bin,并导出 ORACLE_HOME 和 PATH?首先检查一下。另外,我必须注意你的代码显示了ksh有问题的执行不是采购文件~/.profile。您的脚本应该“获取”该文件。我似乎还迷信设置和导出 TNS_ADMIN,如下所示:

export TNS_ADMIN=$ORACLE_HOME/network/admin

/nolog您可以使用以下选项在“此处文档”中包含数据库用户 ID 和密码,以sqlplus避免向运行以下命令的任何人显示这些详细信息ps

sqlplus -s /nolog 2>&1 << END_ZERO_ROW_CHECK
connect $USER_NAME/$PASSWORD@$SID_INSTANCE
whenever oserror exit failure
whenever sqlerror exit failure
...
END_ZERO_ROW_CHECK

相关内容