我们遇到了一个错误,它使用Perl脚本将数据处理到Oracle数据库中。一些细节:
因此perl脚本连接到Oracle数据库,并运行SQL以从另一个数据库加载数据。它通过sqlplus命令行运行SQL,如下所示:
$resultString = `sqlplus $connectString \@sqlScript.sql $var1 $var2`;
{改名以保护无辜者}
现在奇怪的是昨晚数据库perl脚本在蓝色屏幕上运行并重新启动。当perl脚本今天早上再次运行时,同样的事情。我们将它跟踪到perl代码中的上一行,该代码试图连接到周末关闭的数据库。
我可以在相关服务器上可靠地重现错误,但不能在另一个win2003 64位服务器上重复(同样的perl安装)。
任何人都有任何想法为什么系统调用(当它收到ORA-12500错误时)会使服务器崩溃?我没有机会查找任何转储文件,但到目前为止,我不能在相同的基本环境下崩溃。
更新:因此确定两个服务器(一个崩溃,一个没有)没有修补到同一级别,也没有最近的更新。所以两者都打了补丁,测试再次运行。之前没有崩溃的那个仍然没有崩溃。那个仍然做的。以为如果有人在考虑补丁,我会把它扔出去。
答案 0 :(得分:0)
这是一个非常古老的问题,但听起来它不仅仅是Perl崩溃,而是整个机器。听起来Perl与数据库在同一台机器上运行。
如果没有关于sqlscript内部内容的更多信息,最可能的原因是输出非常大并且耗尽了所有系统内存。尝试使用system()在没有反引号的情况下运行它,看看它是否有帮助。