1

Oracle データベースに接続してから外部関数を呼び出すという奇妙な動作が見られます。は常に -1 です。
問題のマシンは、DBD::Oracle 1.20 および DBI 1.602 で標準の AIX5.3 を実行しています。

#!/usr/bin/perl -w
use DBI;

CORE::system "pwd";
print "Before connect: $?\n";
DBI->connect('dbi:Oracle:', 'pwd', 'pwd');
print "Before system: $?\n";
CORE::system "pwd";
print "After system: $?\n";
CORE::system "pwd";
print "After system: $?\n";

Before connect: 0
Before system: 0
/usr/local/bin
After system: -1
/usr/local/bin
After system: -1

これは別の AIX 5.3 マシンからの結果です。唯一の違いは、DBD:Oracle 1.22 と DBI 1.607 を実行していることです。ただし、これらのモジュールの変更ログを見ると、それに関連するものは何も見つかりません。DBD:Oracle と DBI をアップグレードする以外に、私が試すことができるさらなることについてのアイデア (これは実稼働マシンであるため、すぐに実行することをためらっています)。

4

2 に答える 2

0

この投稿は事実から数か月後のことですが、同じ問題が発生したため、投稿につまずいた場合の回避策について詳しく説明します。

Oracle OCIライブラリのさまざまなバージョンがSIGCHILDを個別に処理します(たとえば、11gR2には問題がありますが、11gR1には問題がありません)。変更して遺贈接続の使用を回避する場合

DBI-> connect('dbi:Oracle:'、'pwd'、'pwd');

DBI-> connect('dbi:Oracle:'、'pwd'、'pwd');

あなたはあなたの問題がなくなるのを見つけるでしょう。もちろん、リスナーを経由して接続したくない場合もありますが、そのための解決策はありません...

于 2010-01-15T01:38:05.573 に答える