Delphi 10.2 DOA 4.1.3 OracleInstantClient 12_2. Only x64 External exception EBF00BAA

cptngrb

Member²
External exception EBF00BAA. This error only appears in the 64-bit version when multithreaded is running.

When a thread is created
oraSession := TOracleSession.Create(nil);
oraSession.LogonUsername := AUser;
oraSession.LogonPassword := APasswd;
oraSession.LogonDatabase := AConnectionString;
oraSession.ThreadSafe := False;
oraSession.LogOn;
 
Does it help if you set ThreadSafe to True? If not, does it help if you logon in the main application thread instead of background threads?
 
Whis ThreadSafe to True, everything works, but you say that when a separate thread, this property does not need to be set.
The SetVariable method for arrays with more than 500,000 elements runs for about 2 minutes if 40 threads are running. When Thread Safe = False is performed about 30 seconds. I critical the speed of execution of the method
 
Everything works correctly in a single-threaded application, but I'm talking about a multithreaded application
 
Does it help if you set ThreadSafe to False and logon in the main application thread instead of background threads?
 
I solved the problem in the following way:
in unit Oracle.pas changed method TOracleSession.GetEnv;
replaced condition
if ThreadSafe then EnvMode:= EnvMode or OCI_Threaded
on
EnvMode:= EnvMode or OCI_Threaded;

after this operation re-compiled the source code and it seems to work without this error
 
Back
Top