ORA-00054 from Bulk Copy API in ODP.Net 11g
673408Dec 2 2008 — edited Dec 19 2008<p>
We're implementing a Bulk Upload solution for a multi-user intranet web app. We upload the excel sheet data into a temp table and then after validations/ checks, put it further into our final tables. We get into a table lock issue when two back to back (with in few seconds) bulk upload are tried in Oracle database 10g using Oracle BulkCopy (ODP.Net 11g). The application is developed in .Net 2.0. The following is the error and environment details. Please do let me know if any of you have a solution to this problem. The code below highlighted in <font color="#ff0000"><strong>RED </strong></font><font color="#000000">gives the error.</font>
</p>
<p>
<strong>Error Message:</strong>
</p>
<p>
ORA-00604: error occurred at recursive SQL level 1
ORA-00054: <strong>resource busy and acquire with NOWAIT specified</strong>
</p>
<p>
<strong>
Code used in Business Layer using BulkCopy:</strong>
</p>
<p>
bulkCopy = new OracleBulkCopy(database connection);
</p>
<p>
// OracleBulkCopyOptions options we set it to defatult
</p>
<p>
bulkCopy.BulkCopyOptions = OracleBulkCopyOptions.UseInternalTransaction;
</p>
<p>
// we specify the column mapping
</p>
<p>
bulkCopy.ColumnMappings.Add("ValuationDate", "FOR_VALUE");
</p>
<p>
bulkCopy.ColumnMappings.Add("PrimaryID", "PRIMARY_ID");
</p>
<p>
bulkCopy.ColumnMappings.Add("Price", "PRICE");
</p>
<p>
bulkCopy.DestinationTableName = "D_PRICE_IMPORT_STAGING";
</p>
<p>
// time options
</p>
<p>
bulkCopy.BatchSize = 400;
</p>
<p>
bulkCopy.BulkCopyTimeout = 60;
</p>
<p>
// uploadDataTable - where the entire data is kept.
</p>
<p>
<strong><font color="#ff0000">bulkCopy.WriteToServer(uploadDataTable); </font></strong>
</p>
<p>
// we insert the data to the table
</p>
<p>
<strong>Environment Details:</strong>
</p>
<p>
.Net 2.0
</p>
<p>
Oracle.Net 11g (Oracle Data Provider)
</p>
<p>
Oracle Database 10g
</p>