Ho problemi con un aggiornamento Oracle. La chiamata a ExecuteNonQuery si blocca indefinitamente.Oracle Update Hangs
Il codice:
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 viene impostato a 5, ed i parametri vengono impostati su valori interi piccoli.
La query:
UPDATE "BEN"."TABLE03" SET "COLUMN03"=:1,"COLUMN04"=:2 WHERE COLUMN05 > 0
La query viene eseguita rapidamente da sqlplus, e normalmente corre veloce dal mio codice, ma ogni tanto si blocca sempre.
Ho eseguito una query su v $ locked_object e c'è un record che si riferisce a questa tabella, ma penso che sia l'aggiornamento che non sta completando.
Ci sono due cose che vorrei sapere: cosa potrebbe causare l'interruzione dell'aggiornamento?
Ancora più importante, perché non viene lanciata un'eccezione qui? Mi aspetterei che la chiamata attenda cinque secondi, quindi scada.
Quale versione di Oracle? Può eseguire questa query: "seleziona * da v $ version" e copia la riga 1. Dovrebbe apparire come: "Oracle Database 10g Release 10.2.0.4.0 - Produzione". Inoltre, questa è una vera tabella o una vista con invece di trigger? Ha dei trigger prima/dopo? –