How to connect to an Oracle Autonomous Data Warehouse with a 3rd party IDE (DataGrip)

datagriporacletnsnameswallet

I'm trying to connect to a Oracle Autonomous Data Warehouse database with Jetbrains DataGrip. Oracle provides me with a wallet file (a zip), with contains tnsnames.ora, a keystore, ojdbc.properties, and some other files.

I'm having a lot of trouble using this information to connect to the database using DataGrip. I found a thread on the DataGrip support forums, but I'm not having any luck with that either.

Jetbrains support thread: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360001792539-Connect-with-Oracle-Cloud
Relevant Oracle documentation: https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/adwud/connect-using-client-application.html

What I did:
1. Created the 'TNS_ADMIN' environment variable and set it to:
C:\\Users\\xxx\\Documents\\[folder with wallet files]
2. Added the Oracle JDBC driver files (ojdbc8.jar, osdt_cert.jar, oraclepki.jar, osdt_core.jar) to the standard Oracle driver in DataGrip
3. edited the 'sqlnet.ora' file to include the path to the wallet files
4. Added the following to the Data Source VM Options:

-Doracle.net.tns_admin=C:\\Users\\xxx\\Documents\\[folder with wallet files]
-Djavax.net.ssl.trustStore=truststore.jks
-Djavax.net.ssl.trustStorePassword=[password]
-Djavax.net.ssl.keyStore=keystore.jks    
-Djavax.net.ssl.keyStorePassword=[password]
-Doracle.net.ssl_server_dn_match=true    
-Doracle.net.ssl_version=1.2
  1. Set connection type to URL only
  2. Tried different connection strings in the URL field:

jdbc:oracle:thin:@//adb.eu-frankfurt-1.oraclecloud.com:1522/xxxxxx_adw1_high.adwc.oraclecloud.com?TNS_ADMIN=C:\\Users\\xxx\\Documents\\[folder with wallet files]

jdbc:oracle:thin:@xxxxxx_adw1_high.adwc.oraclecloud.com?TNS_ADMIN=C:\\Users\\xxx\\Documents\\[folder with wallet files]

jdbc:oracle:thin:@//adb.eu-frankfurt-1.oraclecloud.com:1522/mnr6yzqr22jgywm_adw1_high.adwc.oraclecloud.com

Result:

Connection to ADW1 failed.  
[08006][17002] IO Error: Got minus one from a read call, connect lapse 32 ms.,  
Authentication lapse 0 ms.  

I have also tried using the 'Service name' and 'TNS' connection types and filled in the info from tnsnames.ora. No dice, same error.

Also tried explicitely setting the 'tcp.validnode_checking' parameter to null.

(The connection works fine with sqldeveloper)

What's the proper way to do this?

Best Answer

DataGrip 2021.1 provides Oracle 21.1 JDBC driver with all required jar files.

Read DataGrip help about Oracle connection using wallets.

There are some additional Oracle references.