Each column is extracted from the DataRow and set by index using OracleLoader.SetString() OR OracleLoader.SetNull(). This exact code is shared with processes that load smaller amounts of data with NO ISSUE. After around 35k-36k rows the process pauses at the line OracleLoader.NextRow(). It sits here forever until it is forcefully stopped.
Oracle Monitor shows that the DB (11gR2) is waiting for the client. No blocked or locked tables. No open commits. The process just sits there with no activity whatsoever. I can repeat this example EVERY TIME but the crazy part is that the exact row in which it stops is slightly different every time. The data I'm inserting is ordered by key, so it does not make sense that the problem row is related to column length, type, or constraint. Sometimes ahead, sometimes behind. This led me to believe that there may be an inefficient buffer setting. I've tried high and low numbers to no avail (or I get out of memory exception). All results the same. Please help.
Code: Select all
foreach (DataRow row in inputTable.Rows)
{
for (int columnIndex = 0; columnIndex < row.ItemArray.Count(); columnIndex++)
{
if (row.Table.Columns[columnIndex].DataType == Type.GetType("System.DBNull"))
{
loader.SetNull(columnIndex);
}
else
{
string value = row.ItemArray[columnIndex] as string ?? String.Empty;
loader.SetString(columnIndex, value);
}
}
loader.NextRow();
}
FYI I am using version 7.9.333 23-Sep-13
I cannot find any relevant release notes for my particular issue. Unless i'm missing something?
http://www.devart.com/dotconnect/oracle ... story.html