原因:接続文字列で使用されるTNS別名は、tnsnames.oraファイルに定義されています。このファイルのパスは、TNS_ADMINプロパティで指定します。アプリケーションがこのファイルの保存場所にアクセスできない場合や、tnsnames.oraにTNS別名が定義されていない場合、この例外が発生します。
解決策:TNS_ADMINでtnsnames.oraファイルの保存場所を指定します。JDBC Thinドライバ18.3以降では、接続URLの一部として(jdbc:oracle:thin:@dbname_medium?TNS_ADMIN=/users/test/wallet_dbname/) を指定するか、システム・プロパティ(-Doracle.net.tns_admin)または接続プロパティ(OracleConnection.CONNECTION_PROPERTY_TNS_ADMIN)として設定できます。TNS_ADMINが正しく設定されていることを確認してください。
原因:ウォレットのパスワードが接続プロパティjavax.net.ssl.trustStorePasswordまたは javax.net.ssl.keyStorePasswordで正しく渡されているか確認してください。パスワードの末尾に余分なスペースがないか確認してください。パスワードの末尾にスペースが含まれていると、このエラーが発生することがあります。
解決策:ウォレットのパスワードを指定した行の末尾に余分なスペースがないか、またパスワード自体が正しいかを確認してください。
原因:追加のJARファイルoraclepki.jar、osdt_core.jar、osdt_cert.jarがクラスパスに含まれており、アクセス可能であることを確認してください。これらのJARファイルがクラスパスに含まれていない場合、このエラーが発生することがあります。
解決策:18.3のoraclepki.jar、osdt_core.jar、osdt_cert.jarをダウンロードし、クラスパスに配置してください
原因:Oracle Cloudでは、自律型データベースへの接続にTLSv1.2の使用が必須です。そのため、この例外は(a)古いJDBCドライバ、(b)クラスパス内の複数バージョンのJDBCドライバ、(c)JDKのバージョンなどが原因で発生する可能性があります。
解決策:前提条件のセクションを確認し、適切なバージョンのJDBCドライバとJDKを使用しているか確認してください。また、クラスパスに含まれているJDBCドライバが1つだけであることも確認してください。
原因:Oracle Cloudでは、JDK 9の最新バージョン、またはJDK 8u71以降が必要です。JDK 7を使用する場合は、少なくともJDK 7u80以降が必要です。上記の例外は、古いバージョンのJDK 8またはJDK 7を使用していることが原因で発生している可能性があります。 問題2も確認してください。
解決策:JDK 8をJDK 8u71以降に、またはJDK 7をJDK 7u80以降にアップグレードしてください。
原因:JDK 7を使用する場合は、追加の接続プロパティ -Doracle.net.ssl_cipher_suites を(TLS_RSA_WITH_AES_256_CBC_SHA256)に設定する必要があります。JDK 7で暗号スイートを明示的に設定しないと、例外が発生します。
解決策:JDK 7では、追加の接続プロパティまたはシステム・プロパティとして-Doracle.net.ssl_cipher_suites=(TLS_RSA_WITH_AES_256_CBC_SHA256)を設定してください。
原因:Oracle Cloudでは、強度の高い暗号スイートが必要です。JDK 9またはJDK 8u162を使用している場合は、問題ありません。それ以外の場合、強度の高い暗号スイートTLS_RSA_WITH_AES_256_CBC_SHA256を有効にするため、JDK 8とJDK 7のどちらの環境でも、JCEポリシー・ファイルをインストールする必要があります。推奨されるJCEポリシー・ファイルである local_policy.jarおよびUS_export_policy.jarがない場合は、例外が発生します。
解決策: JCE Unlimited Strength Jurisdiction Policy Filesをダウンロードしてください。インストールに関する注意事項については、READMEを参照してください。
原因:Oracle Cloudでは、転送プロトコルとしてTLSv1.2を使用する必要があります。 JDBC Thinドライバ12.1.0.2を使用する場合は、クラウド向けJDBCドライバのダウンロードから入手できるパッチ適用済みのJARファイルを使用するか、バグ23176395のパッチを適用する必要があります。このバグのパッチによってTLSv1.2を使用できるようになりますが、自動的に有効になるわけではありません。そのため、TLSのバージョンを明示的に設定する必要があります。
解決策:プロパティoracle.net.ssl_version=1.2を設定してください。このプロパティは、-Dを使用したシステム・プロパティとして、または接続レベルのプロパティとして設定できます。
原因:クラスパスに含まれるJDBCドライバのバージョンが、ダウンロードしたOracle Instant ClientのディレクトリにあるJDBCドライバのバージョンと異なっている可能性があります。
解決策:Instant Clientと同じバージョンのJDBCドライバを使用してください。Instant Client 12_1を使用する場合は、JDBCドライバ12.1.0.2を使用してください。
原因:このエラーには、次の2つの原因が考えられます。
(a) sqlnet.ora とtnsnames.oraが同じディレクトリに存在しない場合、または
(b) sqlnet.oraに cwallet.sso の保存場所を示すパスが反映されていない場合です。
解決策:sqlnet.ora とtnsnames.oraを同じディレクトリに配置し、ウォレット・ファイル( cwallet.sso)の保存場所を示すパスをsqlnet.oraに設定してください。
-Djavax.net.debug=all を使用してデバッグを有効にしてください。