Re: Oracle Data Provider Issue

Tech-Archive recommends: Repair Windows Errors & Optimize Windows Performance



benjo wrote:

On 19 Dic, 20:29, "Nicholas Paldino [.NET/C# MVP]"
<m...@xxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote:
Somehow, I doubt that it is the noop that is causing your
problems. Rather, I think that it might be a problem with the
client, or in how you are using it.

I also think that is not possible that the nop is the blocking, but
what I have posted is that the debug shows me.


Can you show some more details? Like the section of code that
you got this disassembly from? The connection string? What
version of the Oracle client do you have running on that machine?


Oracle client SQL*Plus: Release 10.2.0.1.0
Oracle.DataAccess Assmbly version 2.102.2.20

_connectionString = "User Id=mk;Password=mk;Data
Source=rtdbmk;Pooling=False"


[CODE - 1]
String whereCond = "MODEL_ID = " +
((Int32)modelId).ToString() +
" AND PARAMETER_TYPE = " + parameterType.ToString();
if (stripID != String.Empty)
whereCond += " AND STRIP_ID = '" + stripID + "'";
String sql = "SELECT DIMENSION, PARAMETER FROM MODEL_HIST
WHERE " + whereCond +
" AND ACTIVATION_TIME = " +
"(SELECT MAX(ACTIVATION_TIME) FROM MODEL_HIST WHERE "
+ whereCond + " ) ORDER BY MSEC DESC";
DataTable dt = new DataTable();
OracleDataAdapter oda =
new OracleDataAdapter(sql, conn);
oda.Fill(dt);------------------> this is the C# statement
whose disassembly I posted yesterday
dimension = Convert.ToInt32(dt.Rows[0]["DIMENSION"]);
return (dt.Rows.Count == 0) ? null : (Byte[])dt.Rows[0]
["PARAMETER"];
[\CODE - 1]

PARAMETER attribute is type of B.L.O.B. and contains an object
serialized in XML format and then compressed in GZip

The really strange thing is that there is 9 applications of the same
kind but only 2 show the problem. They all retrieve data from database
from different tables, but all retrieve from MODEL_HIST table some
BLOBs (containing different objects).
During the 3 last blocked execution i noticed that the problem happens
when retrieving an array of Double, but before that the applications
get successfully from the same table other arrays or more complex
object.

[CODE - 2]
Object objBlob = new PreSetData();
String retMsg = MkDBHelper.RetrieveModelData(oraConnRTDB,
ModelIds.RollingSetup, 1, awakeParameters.StripId, ref objBlob);
preSet = (PreSetData)objBlob;

objBlob = new Double[10];
retMsg = MkDBHelper.RetrieveModelData(oraConnRTDB,
ModelIds.RollingAdapt, 3, awakeParameters.StripId, ref objBlob);
stripYoungMod = (Double[])objBlob;

WriteLog("Reading yield stress from previous Rolling Adaptation",
true, false);

objBlob = new Double[10];
retMsg = MkDBHelper.RetrieveModelData(oraConnRTDB,
ModelIds.RollingAdapt, 3, awakeParameters.StripId, ref objBlob);
yieldStress = (Double[])objBlob;
[\CODE - 2]

[CODE - 1] implements MkDBHelper.RetrieveModelData()

These lines [CODE - 2] are executed one time every activation, which
happens every 2 minutes, and apparently random, some times, the
execution stay blocked in MkDBHelper.RetrieveModelData(). Stepping in
during debug I find that the blocking statement is "oda.Fill(dt)"


--
- Nicholas Paldino [.NET/C# MVP]
- m...@xxxxxxxxxxxxxxxxxxxxxxxxxxx

"benjo" <filo.c...@xxxxxxxxx> wrote in message

news:54c9a77d-db19-4beb-8660-c525af53cf27@xxxxxxxxxxxxxxxxxxxxxxxxxx
om...

Hi all,

I have developed an application which strongly access an Oracle
10g DB. The application has to be running for days but i got this
problem.

The code execution stay blocked in one of these three statements:

oraConnection.Open();

oraConnection.Close();

oda.Fill(dt); (where oda is an instance of OracleDataAccess an dt
an instance od DataTable class)

The really strange thing is that these lines are succesfully
executed a lot of time but in some case (about 1 time every 6
hours or in some case 1 time every 24 hour, the frequency is not
really fixed) the execution of one of the above statements never
ends. For instance in case of Close() the connection from Oracle
side has already closed (I have verified with appropriate query
on session) but the execution of the C# statement is still living
and not returning. In case of oda.Fill(dt), I have just found
that, the execution as i can see now (19-Dec-07 10:20:00) from
disassembly is blocked in the statement "nop" since 18-Dec-07
22:49:00 oda.Fill(dt);
0000016a mov edx,ebx
0000016c mov ecx,dword ptr [esp+14h]
00000170 cmp dword ptr [ecx],ecx
00000172 call 60F68188
00000177 nop ------------THIS IS THE BLOCKING STATEMENT

hope someone can help me, i'm really in trouble :S

Switch ON connection pooling. Pooling should only be switched off with
single-threaded desktop applications.

FB


--
------------------------------------------------------------------------
Lead developer of LLBLGen Pro, the productive O/R mapper for .NET
LLBLGen Pro website: http://www.llblgen.com
My .NET blog: http://weblogs.asp.net/fbouma
Microsoft MVP (C#)
------------------------------------------------------------------------
.



Relevant Pages

  • Re: Oracle Data Provider Issue
    ... Rather, I think that it might be a problem with the client, or in how you ... What version of the Oracle ... During the 3 last blocked execution i noticed that the problem happens ... ModelIds.RollingSetup, 1, awakeParameters.StripId, ref objBlob); ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Query with LONG RAW
    ...     FROM pfmq_messagedata md, ... It appears that the execution plan is using mostly high precision ... were working to determine the rows to be returned to the client. ... waiting for the completion of a disk read. ...
    (comp.databases.oracle.server)
  • Stay of execution
    ... get a stay of execution for a client who was due to be hanged ... Wright would not be hanged tonight. ... "They're not hanging Wright tonight," she said. ...
    (uk.people.silversurfers)
  • Re: Wright
    ... get a stay of execution for a client who was due to be hanged ... Wright would not be hanged tonight. ... "They're not hanging Wright tonight," she said. ...
    (uk.rec.humour)
  • The Lawyer
    ... stay of execution for a client who was due ... told that her husband's client, James Wright, had been granted a stay ... Wright would not be hanged tonight. ... As she opened the bathroom door, she was greeted by the sight of her ...
    (uk.rec.humour)