Мы столкнулись с ошибкой в сценарии Perl, который обрабатывает данные в базе данных Oracle. Несколько деталей:
- Сервер: Windows Server 2003 R2, 64-разрядная
- Oracle: 10.2.0.4
- Perl: ActivePerl 5.10 64-bit, сборка 1005
Таким образом, скрипт perl подключается к базе данных Oracle и запускает SQL для загрузки данных из другой базы данных. Он запускает SQL через командную строку sqlplus, например:
$resultString = `sqlplus $connectString \@sqlScript.sql $var1 $var2`;
{имена были изменены, чтобы защитить невинных}
Теперь странно то, что прошлой ночью база данных, на которой скрипт perl запускался на синем экране, перезапускалась. Когда сценарий perl был запущен снова этим утром, то же самое. Мы отследили его до приведенной выше строки в коде Perl, который пытался подключиться к базе данных, которая была закрыта в выходные дни.
Я могу надежно воспроизвести ошибку на рассматриваемом сервере, но не на другом 64-разрядном сервере win2003 (такая же установка perl).
У кого-нибудь есть идеи, почему системный вызов (когда он получил ошибку ORA-12500) может привести к сбою сервера? У меня не было возможности искать какие-либо файлы дампа, но пока я не могу вывести из строя ничего другого в той же базовой среде.
ОБНОВЛЕНИЕ: Таким образом, было определено, что два сервера (один из которых вышел из строя, а другой - нет) не были исправлены на одном уровне и не имели никаких последних обновлений. Так что оба были исправлены, и тесты были запущены на каждом снова. Тот, который не разбился раньше, все еще не разбился. Тот, который сделал еще. Думал, что я это выброшу, если кто-то думает, что заплатки.