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的主要内容,如果未能解决你的问题,请参考以下文章

无法在 php 中连接到 mysql 8

无法在 SKStoreProductViewController 中连接到 iTunes Store

无法在 Launch 代理中连接到 XPCService

无法在 Xcode 中连接到本地服务器

Django 无法在 Docker 设置中连接到 Postgres

无法在 Python 程序中连接到 MySQL