Problem connecting to Oracle using Oracle 12 client

177 views
Skip to first unread message

Hermann Ottens

unread,
Mar 8, 2018, 4:48:47 AM3/8/18
to VA Smalltalk
Hi group,

i'm having a problem with connecting from VAST to Oracle using the Oracle 12 Client.
I can reproduce the error with the following code:

| conSpec logonSpec conn querySpec resultCollection |
conSpec := AbtDatabaseConnectionSpec
forDbmClass: #AbtOracle10DatabaseManager
databaseName: '...'.
["================================"
self halt.
conn := conSpec connect.
querySpec := AbtQuerySpec new statement: 'SELECT sysdate FROM dual'.
resultCollection := (conn resultTableFromQuerySpec: querySpec) asStrings.
"================================"]
ensure: [conn disconnect].
resultCollection inspect.

This code works fine with any Oracle 11 client.
I tried it with several Oracle 12 clients (12.1.0.1.0 instant client, 12.1.0.2.0 instant client and normal client, 12.2.0.1.0 instant client)
and each time i get the following results:

- in VAST 8.5.2: crash without any trace, process abt.exe just disappears.

- in VAST 9.0 (32 bit): error 'Primitive failed in: PlatformFunction>>#callWithArguments: due to Unknown floating point exception'

- in VAST 9.0 (64 bit): works

The code fails always at "connect", to be more exact, it fails when calling the external function OCILogon.
I wrote a little c program based on a simple source code snippet from Oracle. It ran fine using the Oracle 12 client.
Then i transferred the code to a dll and called that from VAST and again the image crashed when calling "connect".
Right now i'm a bit at a loss.

Any ideas?

Hermann

Wayne Johnston

unread,
Mar 8, 2018, 6:48:14 AM3/8/18
to VA Smalltalk
Is this on Windows, and the Oracle server a 64-bit DLL?

Hermann Ottens

unread,
Mar 8, 2018, 8:21:59 AM3/8/18
to VA Smalltalk
Hups, i was blinded by routine.
I was talking about using VAST on Windows.
The servers are Oracle 11 (Windows) and Oracle 12 servers (Windows and Linux) (all of them 64 bit).
I forgot to mention, that on Linux a connection from VAST to Oracle is possible without any problems using the Oracle 11 or the Oracle 12 client.

Hermann

Bob Brodd

unread,
Mar 8, 2018, 10:58:49 AM3/8/18
to VA Smalltalk
Hi Hermann,

For VAST 8.5.2 and 9.0(x86) , you will have to install 32bit versions of the Oracle client.  Any chance you are trying to talk to a 64bit oracle client in these cases?

Bob

Hermann Ottens

unread,
Mar 9, 2018, 5:27:59 AM3/9/18
to VA Smalltalk
Hello Bob,

reasonable question, but i used the correct client.
(Just for the records:
Trying to connect 32-bit VAST to a 64-bit-Oracle Client results in 'Primitive failed in: PlatformFunction>>#callWithArguments: due to OS error193'.
According to winerror.h
#define ERROR_BAD_EXE_FORMAT 193L)

When i made the tests i used the Sysinternals ProcessExplorer to make sure that the right DLLs from the right path were loaded.
I also checked with DependencyWalker that the 32-bit DLLs were in fact 32-bit DLLs.

Cheers,
Hermann

Bob Brodd

unread,
Mar 12, 2018, 11:23:41 AM3/12/18
to VA Smalltalk

Hermann,
I will try to set up a 12c environment and test it.  I usually test things with the Express Edition, but that is not available for 12c in any version yet, so ill install a 64bit db server and a 32bit client and see what my results are.
Bob

Bob Brodd

unread,
Mar 16, 2018, 10:21:54 PM3/16/18
to VA Smalltalk
Hermann,

I have finally managed to set up a Windows 10 32-bit  machine with the 32-bit Oracle 12c client and a 64-bit Windows 10 machine running an Oracle 12c 64-bit server.  I have been able to successfully run a large number of DB tests from a VA Smalltalk 9.0 32-bit image running on the client machine.   Is this a similar setup to what you are using?

I also tried out your test snippet of code ( with a slight change to avoid prompt for userid/pw) that also works ok.  The 'XE' is the service name I defined in the tnsnames.ora file that points to my server:

| conSpec logonSpec conn querySpec resultCollection |
conSpec := AbtDatabaseConnectionSpec
forDbmClass: #AbtOracle10DatabaseManager
databaseName: ''.
logonSpec := AbtDatabaseLogonSpec
id: 'system'
password: '<enter pw here>'' 
server: 'XE'.
["================================"
self halt.
conn := conSpec connectUsingAlias: 'test' logonSpec: logonSpec .
querySpec := AbtQuerySpec new statement: 'SELECT sysdate FROM dual'.
resultCollection := (conn resultTableFromQuerySpec: querySpec) asStrings.
"================================"]
ensure: [conn disconnect].
resultCollection inspect.

Bob

Hermann Ottens

unread,
Mar 28, 2018, 11:06:17 AM3/28/18
to VA Smalltalk
Hi Bob,

(i have been absent for a while so that i couldn't answer earlier)
thank you for your reply.
I already had a suspicion that this might be a special problem because nobody else seems to complain about this.
What i could find out additionally is, that this error only occurs on machines that have some kind of virtualization in use.
As far as i can see, this behaviour appears here on Citrix machines on VMWare machines and on physical machines with Symantec Workspace Virtualization.

Cheers,
Hermann

Bob Brodd

unread,
Mar 28, 2018, 12:22:01 PM3/28/18
to va-sma...@googlegroups.com
Hermann,
All of my DB testing takes place in VMWare virtual machines.  For this test, I had a Windows 10 x64 vm set up with an Oracle 12c server and a Windows 10 x86 vm set up with the Oracle 12c client.  Both VMs running on the same physical machine.  
Bob
--
You received this message because you are subscribed to a topic in the Google Groups "VA Smalltalk" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/va-smalltalk/-soxo7KknKI/unsubscribe.
To unsubscribe from this group and all its topics, send an email to va-smalltalk...@googlegroups.com.
To post to this group, send email to va-sma...@googlegroups.com.
Visit this group at https://groups.google.com/group/va-smalltalk.
For more options, visit https://groups.google.com/d/optout.

Hermann Ottens

unread,
Apr 12, 2018, 5:04:17 AM4/12/18
to VA Smalltalk
Hello Bob,

thank you for your effort.
I will inform you as soon as i find out more about this strange behaviour-

Cheers,
Hermann

Norbert Schlemmer

unread,
Apr 23, 2018, 4:27:57 AM4/23/18
to VA Smalltalk
Hermann,

for VAST 8.5.2 you should check the Oracle platform functions at:
AbtOracle10DatabaseManager class>>#buildAbtOraclePlatformFunctionsDictionary:language:library:return:integer:

bugs are fixed in VAST 9.0 and the changes are needed in VAST 8 too

Norbert
Reply all
Reply to author
Forward
0 new messages