Not connected to oracle error

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Traptak
Posts: 26
Joined: Fri 29 Jun 2007 07:15

Not connected to oracle error

Post by Traptak » Sun 20 Sep 2009 19:05

Hi,

I have following problem with TOraQuery. I have view in database with instead of trigger. When I try to delete one of record in dataset with data from view - everything works correctly. But if in dataset is only one record and I try to delete them then exception: ORA-03114: not connected to ORACLE is shown.

TOraQuery works with CachedMode = True;

Select query is:
select *
from u_eks.v_wagony_uszkodzenia wu
where
wu_we_id = :we_id and (wu.wu_wz_id = :wz_id or wu.wu_wp_id = :wp_id)

Delete query (generated by TOraQuery)
DELETE FROM U_EKS.V_WAGONY_USZKODZENIA
WHERE
WU_ID = :Old_WU_ID

and it looks correctly.


Here is error stack:

[00BE5385] Ora.TOraDataSet.InternalExecute (Line 6345, "..\Ora.pas")
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[480D5785] Jclhookexcept.
[480D57F2] Jclhookexcept.
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[00BAA2FD] OraClasses.TOCICommand.Check (Line 5731, "..\OraClasses.pas")
[00BAD00C] OraClasses.TOCICommand.InternalExecute (Line 6742, "..\OraClasses.pas")
[20003DC4] System.@FreeMem (Line 2699, "sys\system.pas")
[00BACD1E] OraClasses.TOCICommand.BindParam (Line 6672, "..\OraClasses.pas")
[00BAD410] OraClasses.TOCICommand.Exec (Line 6857, "..\OraClasses.pas")
[00BA3CCA] OraClasses.TOCIConnection.Release (Line 3288, "..\OraClasses.pas")
[00BB5001] OraClasses.TOCICommand.BindParams (Line 9679, "..\OraClasses.pas")
[00BB4865] OraClasses.TOCICommand.DoExecute (Line 9468, "..\OraClasses.pas")
[00BB49AC] OraClasses.TOCICommand.Execute (Line 9502, "..\OraClasses.pas")
[00BC4677] OraClasses.TOCITransaction.LocalTransactionId (Line 15351, "..\OraClasses.pas")
[00BC453F] OraClasses.TOCITransaction.DetectInTransaction (Line 15320, "..\OraClasses.pas")
[00BD22E2] OraTransaction.TOraTransaction.DetectInTransaction (Line 344, "..\OraTransaction.pas")
[00CD0B40] DBAccess.TDATransaction.GetActive (Line 14701, "..\DBAccess.pas")
[00CB6CBC] DBAccess.TCustomDAConnection.UsedTransaction (Line 3448, "..\DBAccess.pas")
[00CBA3A9] DBAccess.TCustomDADataSet.GetUsedTransaction (Line 5086, "..\DBAccess.pas")
[00CBA3B8] DBAccess.TCustomDADataSet.UsedTransaction (Line 5094, "..\DBAccess.pas")
[00CBA204] DBAccess.TCustomDADataSet.EndConnection (Line 5036, "..\DBAccess.pas")
[00CBB263] DBAccess.TCustomDADataSet.DoAfterExecute (Line 5502, "..\DBAccess.pas")
[00BB4BBD] OraClasses.TOCICommand.EndExecute (Line 9575, "..\OraClasses.pas")
[20006F4A] System.@HandleOnException (Line 10413, "sys\system.pas")
[00BB49D5] OraClasses.TOCICommand.Execute (Line 9505, "..\OraClasses.pas")
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[480D5785] Jclhookexcept.
[480D57F2] Jclhookexcept.
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[00BAA2FD] OraClasses.TOCICommand.Check (Line 5731, "..\OraClasses.pas")
[00BAD00C] OraClasses.TOCICommand.InternalExecute (Line 6742, "..\OraClasses.pas")
[20003DC4] System.@FreeMem (Line 2699, "sys\system.pas")
[00BACD1E] OraClasses.TOCICommand.BindParam (Line 6672, "..\OraClasses.pas")
[00BAD410] OraClasses.TOCICommand.Exec (Line 6857, "..\OraClasses.pas")
[00BA3CCA] OraClasses.TOCIConnection.Release (Line 3288, "..\OraClasses.pas")
[00BB5001] OraClasses.TOCICommand.BindParams (Line 9679, "..\OraClasses.pas")
[00BB4865] OraClasses.TOCICommand.DoExecute (Line 9468, "..\OraClasses.pas")
[00BB49AC] OraClasses.TOCICommand.Execute (Line 9502, "..\OraClasses.pas")
[00BC4677] OraClasses.TOCITransaction.LocalTransactionId (Line 15351, "..\OraClasses.pas")
[00BC453F] OraClasses.TOCITransaction.DetectInTransaction (Line 15320, "..\OraClasses.pas")
[00BD22E2] OraTransaction.TOraTransaction.DetectInTransaction (Line 344, "..\OraTransaction.pas")
[00CD0B40] DBAccess.TDATransaction.GetActive (Line 14701, "..\DBAccess.pas")
[00CD0C1B] DBAccess.TDATransaction.Reset (Line 14720, "..\DBAccess.pas")
[00CD054A] DBAccess.TDATransactions.GetItems (Line 14524, "..\DBAccess.pas")
[00CB75E6] DBAccess.TCustomDAConnection.ResetOnFatalError (Line 3686, "..\DBAccess.pas")
[00CB7A97] DBAccess.TCustomDAConnection.DoError (Line 3827, "..\DBAccess.pas")
[00C9B06F] CRAccess.TCRConnection.DoError (Line 884, "..\CRAccess.pas")
[00B9FAD4] OraClasses.TOCIConnection.DoError (Line 1949, "..\OraClasses.pas")
[00B9FD98] OraClasses.TOCIConnection.OraError (Line 2020, "..\OraClasses.pas")
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[480D5785] Jclhookexcept.
[480D57F2] Jclhookexcept.
[00B9FD57] OraClasses.TOCIConnection.OraError (Line 2012, "..\OraClasses.pas")
[20007076] System.@HandleFinallyInternal (Line 10617, "sys\system.pas")
[00BAA2FD] OraClasses.TOCICommand.Check (Line 5731, "..\OraClasses.pas")
[00BAD00C] OraClasses.TOCICommand.InternalExecute (Line 6742, "..\OraClasses.pas")
[20003DC4] System.@FreeMem (Line 2699, "sys\system.pas")
[00BACD1E] OraClasses.TOCICommand.BindParam (Line 6672, "..\OraClasses.pas")
[00BAD410] OraClasses.TOCICommand.Exec (Line 6857, "..\OraClasses.pas")
[00BA3CCA] OraClasses.TOCIConnection.Release (Line 3288, "..\OraClasses.pas")
[00BB5001] OraClasses.TOCICommand.BindParams (Line 9679, "..\OraClasses.pas")
[00BB4865] OraClasses.TOCICommand.DoExecute (Line 9468, "..\OraClasses.pas")
[00BB49AC] OraClasses.TOCICommand.Execute (Line 9502, "..\OraClasses.pas")
[20007076] System.@HandleFinallyInternal (Line 10617, "sys\system.pas")
[00C9CE78] CRAccess.TCRRecordSet.ExecCommand (Line 1746, "..\CRAccess.pas")
[00BB6FEB] OraClasses.TOCIRecordSet.ExecCommand (Line 10517, "..\OraClasses.pas")
[00CBAC2B] DBAccess.TCustomDADataSet.InternalExecute (Line 5334, "..\DBAccess.pas")
[00BE52E3] Ora.TOraDataSet.InternalExecute (Line 6336, "..\Ora.pas")
[00CBAF8F] DBAccess.TCustomDADataSet.Execute (Line 5432, "..\DBAccess.pas")
[00CBB0ED] DBAccess.TCustomDADataSet.Execute (Line 5463, "..\DBAccess.pas")
[00C85170] MemUtils.IsClass (Line 1075, "..\MemUtils.pas")
[00CCFEF1] DBAccess.TDBAccessUtils.Execute (Line 14287, "..\DBAccess.pas")
[004024BD] FastMM4.FastFreeMem
[004037B5] FastMM4.DebugFreeMem
[004037CA] FastMM4.DebugFreeMem
[20003DC4] System.@FreeMem (Line 2699, "sys\system.pas")
[20007A19] System.@LStrArrayClr (Line 12266, "sys\system.pas")
[00CAFC1B] DASQLMonitor.TCustomDASQLMonitor.InternalSQLExecute (Line 686, "..\DASQLMonitor.pas")
[00CAE966] DASQLMonitor.TCustomDASQLMonitor.SQLExecute (Line 274, "..\DASQLMonitor.pas")
[00CAE9C9] DASQLMonitor.TCustomDASQLMonitor.SQLExecute (Line 287, "..\DASQLMonitor.pas")
[00CC4CE3] DBAccess.TDADataSetUpdater.UpdateExecute (Line 9181, "..\DBAccess.pas")
[00CC4CF0] DBAccess.TDADataSetUpdater.UpdateExecute (Line 9184, "..\DBAccess.pas")
[00BCBA6D] OraServices.TCustomOraDataSetUpdater.UpdateExecute (Line 656, "..\OraServices.pas")
[00CC6182] DBAccess.TDADataSetUpdater.PerformSQL (Line 9612, "..\DBAccess.pas")
[00BCBAD9] OraServices.TCustomOraDataSetUpdater.PerformSQL (Line 665, "..\OraServices.pas")
[00CC7041] DBAccess.TDADataSetUpdater.PerformDelete (Line 9935, "..\DBAccess.pas")
[00CAD46C] MemDS.TDataSetUpdater.DoApplyRecord (Line 4226, "..\MemDS.pas")
[00CA9C95] MemDS.TMemDataSet.DoApplyRecord (Line 2708, "..\MemDS.pas")
[00C8E3D1] MemData.TData.ApplyRecord (Line 3666, "..\MemData.pas")
[00C941C4] MemData.TMemData.ApplyUpdates (Line 6883, "..\MemData.pas")
[0040368D] FastMM4.DebugGetMem
[00CAC444] MemDS.TMemDataSet.ApplyUpdates (Line 3639, "..\MemDS.pas")
[00CAC495] MemDS.TMemDataSet.ApplyUpdates (Line 3644, "..\MemDS.pas")
[00CBD23A] DBAccess.TCustomDADataSet.ApplyUpdates (Line 6246, "..\DBAccess.pas")
[00CBD300] DBAccess.TCustomDADataSet.ApplyUpdates (Line 6269, "..\DBAccess.pas")

I'm using ODAC 6.5.0.39 on Delphi 2007 Professional.

Is it a bug or I'm doing something wrong?

best regards
Adam Siwon

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Mon 21 Sep 2009 07:38

This is caused by an internal error in Oracle server. Oracle has a bug: on some queries an internal error occurs and connection is broken.

Try to resolve this problem by rewriting the code of your trigger.

Traptak
Posts: 26
Joined: Fri 29 Jun 2007 07:15

Post by Traptak » Mon 21 Sep 2009 09:44

Thank you for information. In fact this problem occur also in other tools, so it is not problem with ODAC.

Post Reply