Oracle JDBC connection fails when using keystore and truststore wallets in a standard compute

Use an init script to make the files available to the compute.

Written by pavan.kumarchalamcharla

Last published at: July 24th, 2025

Problem

You’re trying to connect to your Oracle database from a standard compute using a JDBC connection. The JDBC connection uses the javax.net.trustStore or the javax.net.keyStore properties that point to the wallet.sso files from a volume or storage path. 

 

The connection attempt fails with a “handshake_failure” error.

 

Cause

Oracle can’t access the wallet.sso files. 

 

Solution

Use an init script to make the files available to the compute. 

 

1. Add the following init script to the volume or storage path to copy the wallet.sso files to the /cert location. 

#!/bin/bash
mkdir /cert
cp <path-for-wallet.sso-file> /cert
groupadd spark-users
chgrp -R spark-users /cert
chmod 440 /cert/cwallet_dev.sso

 

2. Add the init script to an allowlist. For details, refer to the Allowlist libraries and init scripts on compute with standard access mode (formerly shared access mode) (AWSAzureGCP) documentation.

3. Attach the allowlisted init script to the standard compute. For details, refer to the “Configure a cluster-scoped init script using the UI” section of the Cluster-scoped init scripts (AWSAzureGCP) documentation.

4. Add the Apache Spark configuration spark.connect.perserveOptionCasing true to the compute. For details on how to apply Spark configs, refer to the “Spark configuration” section of the Compute configuration reference (AWS | Azure | GCP) documentation.

5. In your Oracle JDBC connection, use the /cert/wallet.sso path.