Version 19.1 of SQL Developer, SQLcl, Data Modeler, and ORDS are now all available, and you can expect many posts over the next few weeks to cover all the new goodies.

Today I want to highlight some changes we made to how you define your connections.

One change you’ll see right away is a simpler connection dialog:

This is how it looks in version 19.1

The name and color of the connection is up top now, and it’s hopefully less likely you’ll type your password into the username input area by accident!

Proxy User info is moved up top next to the rest of the username stuff – it’s no longer on an advanced pop up dialog.

Now about that Advanced page you still see there, I want to call out a new feature exposed there:

You can now define connections as THICK or THIN.

Previously, SQL Developer would be configured for THICK or THIN connections, application wide, via the ‘Use OCI’ preference on the Advanced page.

If I enable it here, it will mean EVERY Oracle connection going forward will be of type OCI.

Just to back up a bit, your options for connecting to Oracle with our JDBC driver are:

  • thin = PURE JAVA, what most people should be using
  • thick = mix of Java and native compiled libraries via Oracle Client or Instant Client, required for some use cases like RADIUS authentication

And it’s totally fine to usually just go with THIN. Nothing else needed to install or configure.

There are however, some reasons you might need to go ‘thick.’ You can read all about how this works here.

But now, I can have connections in a single instance of SQL Developer going with both THIN and THICK configurations.

If we look at the connection properties for the THICK connection:

ONLY this connection will be THICK

You’ll still need to go about configuring your $ORACLE_HOME or Instant Client in the Advanced Preferences page. And, I still recommend you use the TEST feature, to make sure your OCI connections will be available. The ‘show jdbc’ command ran through our script engine (F5) will also confirm your type of connection.

If you see Success and all OK’s, you should be good to go.
Author

I'm a Distinguished Product Manager at Oracle. My mission is to help you and your company be more efficient with our database tools.

11 Comments

    • Because the Latest 21c clients are missing the (right) jdbc drivers.

      We have a bug logged with that team and once the clients are updated this will work again.

    • Jeff

      Thank you for the reply.
      Any chance that you share the bug, so I can monitor it.

      Kind Regards
      Olivier

  1. Hi Jeff,

    I really do need to use thick driver, but on Linux. Is it possible? If I did my homework properly, then windows oci.dll should be libclntsh.so.19.1 on Linux. SQL developer is ver. 20.4.1.407.0006, Oracle Client is ver 19.6. Testing the OCI driver failed, so I tried to add the path do LD_LIBRARY_PATH (with command export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/oracle/19.6/client64/lib ) but it was still not recognized. As a very quick and very dirty workaround I copied contents of /usr/lib/oracle/19.6/client64/lib to one of the paths from LD_LIBRARY_PATH. Voila, now the testing of the OCI driver succeeded! But when I restarted the SQL Developer and looked in Help >> About >> Properties for “sqldeveloper.oci.available” there is still “false”. I also tried to set the “use OCI” per connection, but the driver remains jdbc:oracle:thin .
    So is it possible to use thick driver on Linux, please?

    • Yes it’s possible. With 20.4.1 you’ll need the 21c instant client. Follow those install instructions for Linux.

    • Hi Jeff,

      the good news is that it works with 21c instant client, thank you very much. The bad news is that with OCI it keeps freezing SQL dev quite a lot. Are there any logs I can analyze? I was looking into system journal log, but there is nothing from SQL dev. Your help is much appreciated.

    • when sqldev ‘freezes’ – grab a jstack, then publish to the forums or open a SR with MOS

  2. Hi Jeff,

    I cannot find any tutorial how to configure the SQL developer (Windows) using only thin jdbc in order to authenticate using Kerberos. Is working when I use thick jdbc (instant client) and OCI .
    I might use some hints.

  3. He seguido lo que dice en este post sin embargo no puedo resolver el problema.
    Por favor necesito que me ayuden.
    la prueba de conexión dice correcto. sin embargo no puedo consultar nada de la base de Datos, ni explorar nada.
    tengo lo siguiente:
    Servidor
    SQL ORACLE 11.1g
    LINUX REDHAT
    FIREWALL SOHPOS
    Cliente:
    Windows 10
    Cliente Oracle 12
    Cliente VPN de sophos. –> para conectarme con la red remota.
    Hago prueba de consulta de esta forma
    ingreso con cmd en windows.
    sqlplus usuario/clave@orcl —> conexión y consulta sin problemas.
    SQL DEVELOPER 19.1

    los errores son:
    Se ha restablecido la conexión a la base de datos. Se ha perdido cualquier estado de sesión o transacción pendiente.

    Se ha producido un error. Haga clic en Detalles para obtener más información que puede resultar útil al diagnosticar o informar de este problema.

    ava.lang.NullPointerException
    at oracle.dbtools.raptor.navigator.db.xml.NavigatorHook.getConnectionType(NavigatorHook.java:252)
    at oracle.dbtools.raptor.navigator.ObjectFactoryRegistry.createFactory(ObjectFactoryRegistry.java:164)
    at oracle.dbtools.raptor.navigator.ObjectFactoryRegistry.getFactory(ObjectFactoryRegistry.java:153)
    at oracle.dbtools.raptor.navigator.db.impl.DatabaseTreeNode.getObjectFactory(DatabaseTreeNode.java:91)
    at oracle.dbtools.raptor.navigator.db.impl.DatabaseTreeNode$LoadTask.doWork(DatabaseTreeNode.java:145)
    at oracle.dbtools.raptor.navigator.db.impl.DatabaseTreeNode$LoadTask.doWork(DatabaseTreeNode.java:119)
    at oracle.dbtools.raptor.backgroundTask.RaptorTask.call(RaptorTask.java:199)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at oracle.dbtools.raptor.backgroundTask.RaptorTaskManager$RaptorFutureTask.run(RaptorTaskManager.java:702)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

    • Oracle 11gR1 – is no longer supported. It’s possible the 18c jdbc driver doesn’t like talking to an 11gR1 database.

      Try getting an older version of SQL Developer, like version 3.1, and try that.

      Also, try to upgrade to 11gR2 if not 19c.

Write A Comment