【问题标题】:standalone Shell script working fine but not working with crontab独立的 Shell 脚本工作正常,但不能与 crontab 一起使用
【发布时间】:2017-07-10 04:36:48
【问题描述】:

我有一个包含以下语句的 shell 脚本。它在单独执行时运行良好。

$ORACLEHOME/bin/sqlplus -s $BDBUSER@$LINKNAME/$BDBPASSWORD <<EOF
  DECLARE
  COUNT1 NUMBER:=0;
  BEGIN
  EXECUTE IMMEDIATE 'DROP TABLE TABLE1';
    EXECUTE IMMEDIATE 'CREATE TABLE TABLE1 AS SELECT * FROM $SCHEMA_NAME.TABLE2@DBLINKNAME';
  END;
  /

EOF

但是当我从 crontab 调用这个 f 时,它失败了。我的 crontab 看起来像

*/1 * * * * /bin/sh /home/mig/Test.sh > /home/mig/Test.txt

我在日志中收到以下错误。

Error 6 initializing SQL*Plus
SP2-0667: Message file sp1<lang>.msb not found
SP2-0750: You may need to set ORACLE_HOME to your Oracle software directory

感谢任何帮助。

【问题讨论】:

  • 您的脚本包含对ORACLEHOME 的引用,而错误消息中提到了ORACLE_HOME。这是故意的吗?另外,您如何设置脚本中使用的所有变量?
  • 我有另一个文件,我在其中初始化了变量并从我的主脚本调用该脚本。

标签: shell cron


【解决方案1】:

尝试在您的 shell 脚本顶部添加这一行。

export ORACLE_HOME=/path/to/oracle/home/directory

在你的 shell 上使用 echo 命令获取 ORACLE_HOME 环境变量的值

【讨论】:

  • 我有另一个脚本,我在变量中导出了 oracle 主目录,并且在这个脚本中调用了该脚本。 script1: 导出 ORACLEHOME='/u01/app/oracle/product/12.1.0.2/dbhome_1' script2: source script1.sh
  • 尝试添加这个也。不知道确切的原因,但我希望它能起作用
  • 错误是要求设置 ORACLE_HOME 而你设置了 ORACLEHOME 并引用这就是错误来的原因
【解决方案2】:

Oracle 需要ORACLE_HOME,而您的脚本需要ORACLEHOME
不用说,最好将脚本更改为使用 ORACLE_HOME,但这不是问题的根本原因。

crontab 命令将跳过您的登录脚本。我认为 ORACLE_HOME 设置在您的.profile 中,所以执行此操作。

*/1 * * * * source  ~/.profile; /bin/sh /home/mig/Test.sh > /home/mig/Test.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-25
    • 2015-07-14
    • 1970-01-01
    • 2020-01-20
    • 2018-05-06
    • 2012-05-01
    • 2021-05-17
    • 1970-01-01
    相关资源
    最近更新 更多