Perl 无法在 cronjob 中连接到 Oracle DB
Posted
技术标签:
【中文标题】Perl 无法在 cronjob 中连接到 Oracle DB【英文标题】:Perl doesn’t connect to Oracle DB in cronjob 【发布时间】:2022-01-20 05:31:17 【问题描述】:我创建了一个连接到 Oracle 数据库的 Perl 脚本,当我手动启动它时可以完美运行,但不能用作 cronjob。
看来,脚本无法连接数据库。
我在连接数据库的语句之前和之后都放了一条打印语句,然后我只能看到第一条消息。 Perl 脚本:
print 'Before connection';
my $dbh = DBI->connect(«dbi:Oracle:MYDB1», $user, $pwd, RaiseError => 1, AutoCommit => 0);
print 'After connection';
Cron:
*/1 * * * * /u01/script.pl >> /u01/msg.log
【问题讨论】:
你有什么错误吗? cron 环境通常非常受限,看看当你的脚本工作和不工作时 %ENV 是否有任何差异。 嗨,克里斯。没有错误,只有我在 dB 连接语句之前放的第一条消息。 我用 export ORACLE_HOME=/path/to/my/oracle/client 和 LD_LIBRARY_PATH=/path/to/my/oracle/client/lib: 创建了一个 sh 脚本。我在sh脚本中调用了perl脚本,最后在crontab中调用了sh脚本,结果还是一样。 在 cron 选项卡的行尾,您需要添加 `2>&1` 以便您的错误显示在日志中。这将帮助您调试,但很可能是由于您的 environment/shell/homedir 中的某些内容可以帮助您连接到数据库,但在 cron 中不可用。 【参考方案1】:这行得通。我能够访问日志,我注意到问题出在环境变量上。
所以我只需在调用 perl 脚本的 sh 脚本中插入“export ENVIRONMENT_VARIABLE = value”。
我的 perl 脚本在那里正常连接到数据库。
谢谢。
【讨论】:
以上是关于Perl 无法在 cronjob 中连接到 Oracle DB的主要内容,如果未能解决你的问题,请参考以下文章
无法在 SKStoreProductViewController 中连接到 iTunes Store