If you require a ‘thick’ connection in SQL Developer 23.1 running on Windows, you’ll need to either:
- Use a 21c Client
- Use the 21c Instant Client with ojdbc11.jar added
SQL Developer 23.1 uses the JDBC API found in ojdbc11 vs ojdb8. While the 21c Client ships with ojdbc11.jar, the Instant Client DOES NOT.
So when you configure SQL Developer 23.1 with an 21c Instant Client, it will fail with something like this when you hit the ‘Test’ button in the preferences.
SQL Developer and our Java/JDBC code base is looking for ojdbc11.jar but it’s not there, only ojdbc8.jar.
The Fix is Simple
- Download ojdbc11.jar from the 21c distribution
- Copy it to your Instant Client
- Restart SQLDev
Download this –
Copy that file to wherever you have your 21c Instant Client on your machine.
Start SQL Developer, make your database connection(s).
Then execute as a script this command in a SQL Worksheet –
show jdbc
What my Path and Preferences look like
For the Instant Client to work, to be available to programs like SQL Developer, you have to sort your OS’s PATH.
Your other questions…
Why do we require a 21c Client and not 19c? Because there are features/fixes there not present in 19c that we require, like for Transparent Application Continuity (TAC). SQL Developer share a ‘commons’ library where connection logic lives that are also used by SQLcl and ORDS, and support for TAC is non-negotiable.
But, there is no 21c Client available for a Mac! Correct, however I expect once 23c is released, an Instant Client will be made available, at least for Intel x86 chip architectures. I can’t make any promises here, so don’t take my word for it, yet.
17 Comments
There is no OJDBC11.jar for Instant Client 21.12.
It is not possible to download an older Version of Instant Client (e.g. 21.11).
If you use Windows there is no solution, because the OJDBC11.jar from the linux package (regard Laurent Scheiders comment) does not work.
If you want to setup OCI for SQL Developer on Windows, it is not possible with Intant Client 21.12, because there is no OJDBC11.jar.
Am I right?
Why do you need 21.12, you could grab 21.10.
Thank you very much for your fast reply.
Where can I get it? As I wrote, I’m not able to find an older version of the Instant Client (https://www.oracle.com/database/technologies/instant-client/winx64-64-downloads.html).
> While the 21c Client ships with ojdbc11.jar, the Instant Client DOES NOT
the latest instant client 21.12 available today ships with ojdbc11 🙂
$ unzip -l instantclient-basic-linux.x64-21.12.0.0.0dbru.zip */*ojdbc11*
Archive: instantclient-basic-linux.x64-21.12.0.0.0dbru.zip
Length Date Time Name
——— ———- —– —-
5245454 09-26-2023 05:15 instantclient_21_12/ojdbc11.jar
——— ——-
5245454 1 file
Great news, thanks for the update.
Hey Jeff a small heads up. When we tried to do a virgin install of sqldev 23.1 and use the download link for the ojdbc11.jar on this page we kept getting an oci error when trying to activate the oci thick connections.
The file was copied into the new instantclient folder we are using. The error kept mentioning that the file was not found in the path variable in the right place (needs to be in front) .
Even though we put the location in the path in the beginning before we start sql developer via a bat.
We were able to solve it by using the ojdbc11.jar file found in the sqldeveloper install folder under /sqldeveloper/sqldeveloper/lib .By copying that file into our instantclient folder the issue was resolved.
Thanks, Mike! This worked for me too.
Why not… Good question 🙂 I have feeling I have tried in the past (no luck) therefore I sticked back to JAVA bundled with SQL Developer (which is still JDK 11 for Apple Sillicon).
Now I tried OpenJDK 17.02 and it works like a charm. Thanks for showing right direction 🙂
SYS@skecbf06v:1530/ESKPFC skecbf06a> sho java
Java Detail
———–
java.home= /Applications/SQLDeveloper.app/Contents/Resources/sqldeveloper/jdk
java.vendor= Oracle Corporation
java.vendor.url= https://openjdk.java.net/
java.version= 11.0.18.0.2
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–
os.arch= aarch64
os.name= Mac OS X
os.version= 12.4
path.separator= :
file.separator= /
line.separator=
SQL > host
Cannot run program “bash” (in directory “/Users/pavolbabel”): error=2, No such file or directory
=========
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home
sql /nolog
SQL > show java
Java Detail
———–
java.home= /Library/Java/JavaVirtualMachines/jdk-17.0.2.jdk/Contents/Home
java.vendor= Oracle Corporation
java.vendor.url= https://java.oracle.com/
java.version= 17.0.2 # < !ls
aliases.xml aliases.xml.bak_1 aliases.xml.bak_2 aliases.xml.bak_3 history.log latin2.txt latin2_1.txt netEntries.xml netEntries.xml~
of course it does. I have seen you using OSX with SQLcl. Does it work on your side ( my configuration is OSX 12.4 and SQLCL 23.1)?
% ls -l /bin/bash
-r-xr-xr-x 1 root wheel 1326576 May 8 2022 /bin/bash
OSX 12.4 on M2. Still getting this error even in 23.1. Is this a know bug for OSX, or do we have a workaround? On windows working fine…
SQL> host
Cannot run program “bash” (in directory “/Users/pavolbabel”): error=2, No such file or directory
There is no 21c instant client available for a mac, so you’ll need to do a THIN connection.
Hi,
I am not complaining about JDBC driver. Using Thin driver, created symbol link from sqlcl driver to my 19.8 instant client, absolutely suitable workarround for me.
I am complaining of following:
SQL> host
Cannot run program “bash” (in directory “/Users/pavolbabel”): error=2, No such file or directory
I am not able to run host, I have seen fimiliar bug in past.
/bin/bash exists on your machine?
of course it does. I have seen you using OSX with SQLcl. Does it work on your side ( my configuration is OSX 12.4 and SQLCL 23.1)?
% ls -l /bin/bash
-r-xr-xr-x 1 root wheel 1326576 May 8 2022 /bin/bash
As you would say, “of course it does”
SQLcl: Release 23.1 Production on Wed May 10 09:27:52 2023
Copyright (c) 1982, 2023, Oracle. All rights reserved.
SQL> !ls *.sql
ls: *.sql: No such file or directory
SQL> !ls
README.md dependencies.txt license.txt sql sql.exe version.txt
SQL> !uname -a
Darwin Jeffreys-Mini.lan 20.5.0 Darwin Kernel Version 20.5.0: Sat May 8 05:10:33 PDT 2021; root:xnu-7195.121.3~9/RELEASE_X86_64 x86_64
SQL> show java
Java Detail
-----------
java.home= /Library/Java/JavaVirtualMachines/jdk-17.0.3.1.jdk/Contents/Home
java.vendor= Oracle Corporation
java.vendor.url= https://java.oracle.com/
java.version= 17.0.3.1
Although I’m on BigSur (11.4) – never seen the need to upgrade, yet.
‘ As you would say, “of course it does” ‘ – True 🙂
OK, as far I can see your have Intel based (x86) Apple computer The second difference I can see you have Oracle JDK 17. I have M2 Macbook Pro and therefore using ARM JDK 11 (I am using that one bundled with SQL Developer). This might be java issue, OSX has special permissions for running external binaries and there might be some issue. So It seems I will be forced to open a SR first, to make oracle support get an eye on it.
Why not try using Homebrew to install sqlcl and get latest Java 17 and see if that helps?