У меня проблемы с обновлением Oracle. Вызов ExecuteNonQuery вешает бесконечно.Oracle Update Hangs
Код:
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, и есть одна запись, ссылающаяся на эту таблицу, но я думаю, что это обновление, которое не выполняется.
Есть две вещи, которые я хотел бы знать: что может привести к зависанию обновления?
Что еще более важно, почему здесь не исключение? Я ожидаю, что вызов будет ждать пять секунд, а затем тайм-аут.
Какую версию Oracle? Можете ли вы запустить этот запрос: «выберите * из v $ version» и скопируйте строку 1. Он должен выглядеть примерно так: «Oracle Database 10g Release 10.2.0.4.0 - Production». Кроме того, это реальная таблица или представление вместо триггеров? Есть ли у него триггеры до/после? –