Oracleのアップデートに問題があります。 ExecuteNonQueryの呼び出しは無期限にハングします。Oracleアップデートがハングアップ
コード:
using (OracleCommand cmd = new OracleCommand(dbData.SqlCommandStr, conn))
{
foreach (string colName in dbData.Values.Keys)
cmd.Parameters.Add(colName, dbData.Values[colName]);
cmd.CommandTimeout = txTimeout;
int nRowsAffected = cmd.ExecuteNonQuery();
}
CommandTimeoutのは5に設定され、パラメータは小さな整数値に設定されています。
クエリ:
UPDATE "BEN"."TABLE03" SET "COLUMN03"=:1,"COLUMN04"=:2 WHERE COLUMN05 > 0
クエリがSQLPLUSからすぐに実行され、通常は自分のコードから高速で実行されますが、たまにではそれが永遠にハングします。
私はv $ locked_objectに関するクエリを実行しましたが、このテーブルを参照するレコードが1つありますが、それは完了していない更新だと思います。
私が知りたいことは2つあります。何が原因で更新がハングアップする可能性がありますか?
さらに重要なことは、ここで例外がスローされないのはなぜですか?コールが5秒待ってからタイムアウトすることを期待します。
のOracleのバージョンは何?この問合せを実行するには、「select * from v $ version」を実行し、行1をコピーします。「Oracle Database 10gリリース10.2.0.4.0 - Production」のようになります。また、これは実際のテーブルか、トリガーの代わりに表示されますか?前/後トリガーはありますか? –