从 Cron 作业登录 SQL

Posted

技术标签:

【中文标题】从 Cron 作业登录 SQL【英文标题】:SQL log in from Cron job 【发布时间】:2016-10-11 17:38:41 【问题描述】:

在 RHEL 7 上,我正在尝试访问 SQL 表。当我从终端运行代码时,我可以访问数据库并且脚本按预期运行。当我从 crontab 运行相同的脚本时,出现错误:

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

这是我的代码:

getSequence()

    SQLPLUS=/oracle/app/oracle/product/12c/bin/sqlplus
    seq_num=$($SQLPLUS -S $OPS_DB_USER/$OPS_DB_ORACLE_PASSWD<<-EOF
    set heading off
    set feedback off
    select Sequence.nextval from dual;
    EOF)
    VERSION=`printf "%07d" $seq_num`

【问题讨论】:

您是否尝试将 ORACLE_HOME 设置为您的 Oracle 软件目录? 我已尝试从脚本中导出 ORACLE_HOME=/oracle/app/oracle/product/12c/bin。 尝试 ORACLE_HOME=/oracle/app/oracle/product/12c(排除 /bin),因为它需要 HOME 目录而不是 BIN 目录 谢谢,这绝对是其中的一部分。 【参考方案1】:

如果脚本按预期运行。确保在脚本上正确设置了权限,以便在 cron 运行时具有执行脚本的正确权限。还要仔细检查您的环境变量。这是我如何使用 bash 脚本调用 proc 的示例。希望这会有所帮助。

#!/bin/bash

sqlplus -s <<%%
$DBLOG/$DBPWD@$ORACLE_SID

exec "my_proc"();

exit
%%

【讨论】:

以上是关于从 Cron 作业登录 SQL的主要内容,如果未能解决你的问题,请参考以下文章

Cpanel 不运行我的 cron 作业

在 GAE 上用 Java 编写 Cron 作业以运行 BigQuery

如何查询 SQL 作业所有者的可能登录名?

PHP 可以检测它是从 cron 作业还是从命令行运行?

将 mySQL 查询作为 cron 作业运行?

使用 R 和 SQL Server 的 Cron 作业