Par conséquent, essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).
Téléchargez Oracle Instant Client. Téléchargez le client instantané 12.1.0.2 qui inclut ojdbc6.jar pour JDK6.
- Instant Client Downloads for Linux x86-64 (64-bit)
https://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html
instantclient-basic-linux.x64-12.1.0.2.0.zip
instantclient-jdbc-linux.x64-12.1.0.2.0.zip
Cette fois, il est supposé qu'il est étendu à / home / opc / work / instantclient_12_1 /.
unzip instantclient-basic-linux.x64-12.1.0.2.0.zip
unzip instantclient-jdbc-linux.x64-12.1.0.2.0.zip
ls -la /home/opc/work/instantclient_12_1/
total 192020
drwxrwxr-x. 2 opc opc 4096 Jul 20 10:41 .
drwxrwxr-x. 7 opc opc 4096 Jul 21 12:55 ..
-rwxrwxr-x. 1 opc opc 29404 Jul 7 2014 adrci
:
-r-xr-xr-x. 1 opc opc 156353 Jul 7 2014 libocijdbc12.so
-r-xr-xr-x. 1 opc opc 337137 Jul 7 2014 libons.so
-rwxrwxr-x. 1 opc opc 118491 Jul 7 2014 liboramysql12.so
-r--r--r--. 1 opc opc 3692096 Jul 7 2014 ojdbc6.jar
-r--r--r--. 1 opc opc 3698857 Jul 7 2014 ojdbc7.jar
-r--r--r--. 1 opc opc 1659574 Jul 7 2014 orai18n.jar
-r--r--r--. 1 opc opc 87292 Jul 7 2014 orai18n-mapping.jar
-rwxrwxr-x. 1 opc opc 227410 Jul 7 2014 uidrvci
-rw-rw-r--. 1 opc opc 71202 Jul 7 2014 xstreams.jar
Téléchargez et décompressez le portefeuille de la base de données autonome. Veuillez vous référer aux articles suivants.
- Connectez-vous à une base de données autonome (Autonomous Transaction Processing) en utilisant Golang https://qiita.com/sugimount/items/69e11c116a895c9feb97
cd /home/opc/work/wallet
unzip Wallet_DBxxxxxxxxxxxxxx.zip
ls -la
total 68
drwxrwxr-x. 2 opc opc 4096 Jul 21 13:36 .
drwxrwxr-x. 6 opc opc 4096 Jul 21 13:36 ..
-rw-rw-r--. 1 opc opc 6661 Jun 24 10:18 cwallet.sso
-rw-rw-r--. 1 opc opc 6616 Jun 24 10:18 ewallet.p12
-rw-rw-r--. 1 opc opc 3242 Jun 24 10:18 keystore.jks
-rw-rw-r--. 1 opc opc 87 Jun 24 10:18 ojdbc.properties
-rw-rw-r--. 1 opc opc 114 Jun 24 10:18 sqlnet.ora
-rw-rw-r--. 1 opc opc 5638 Jun 24 10:18 tnsnames.ora
-rw-rw-r--. 1 opc opc 3336 Jun 24 10:18 truststore.jks
-rw-rw-r--. 1 opc opc 19912 Jun 24 10:18 Wallet_DBxxxxxxxx.zip
L'extraction du zip du portefeuille générera sqlnet.ora, mais réécrira le RÉPERTOIRE de ce sqlnet.ora dans le répertoire d'extraction du portefeuille.
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
↓
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/work/wallet")))
C'est un code divers qui n'a finalement pas libéré de ressources, mais pardonnez-moi Clements ……: (; ゚ 'ω ゚'): Vous ne pouvez pas utiliser la syntaxe try-with-resources avec JDK6. 彡 (゜) (゜)
import java.sql.*;
public class GetContainerName {
public static void main(String[] args) {
final String path = "jdbc:oracle:oci:@dbxxxxxxxx_tp";
final String id = "ADMIN"; //ID
final String pw = "xxxxxxxx"; //password
try {
Connection conn = DriverManager.getConnection(path, id, pw);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT NAME FROM V$CONTAINERS");
while (rs.next()) {
String cn = rs.getString("name");
System.out.println("Container Name => " + cn);
}
} catch(SQLException ex) {
ex.printStackTrace(); //Error
}
}
}
Le point est ici de l'URL JDBC, spécifiez la chaîne de caractères de connexion de tnsnames.ora tout en spécifiant le pilote oci.
final String path = "jdbc:oracle:oci:@dbxxxxxxxx_tp";
Compilez et exécutez avec javac. Lors de l'exécution, spécifiez les variables d'environnement suivantes.
- LD_LIBRARY_PATH
⇒ Spécifiez le répertoire dans lequel vous avez extrait Oracle Instant Client.- TNS_ADMIN
⇒ Spécifiez le répertoire dans lequel le portefeuille Autonomous Database est développé.
La commande d'exécution est la suivante.
export JAVA_HOME=/usr/java/jdk1.6.0_211
export PATH=${JAVA_HOME}/bin:${PATH}
java -version
javac -version
javac GetContainerName.java
export LD_LIBRARY_PATH=/home/opc/work/instantclient_12_1:$LD_LIBRARY_PATH
export TNS_ADMIN=/home/opc/work/wallet
java -classpath /home/opc/work/instantclient_12_1/ojdbc6.jar:. GetContainerName
Le résultat de l'exécution est le suivant, cela a bien fonctionné! 彡 (^) (^)
$ export JAVA_HOME=/usr/java/jdk1.6.0_211
$ export PATH=${JAVA_HOME}/bin:${PATH}
$ java -version
java version "1.6.0_211"
Java(TM) SE Runtime Environment (build 1.6.0_211-b11)
Java HotSpot(TM) 64-Bit Server VM (build 20.211-b11, mixed mode)
$ javac -version
javac 1.6.0_211
$ javac GetContainerName.java
$ export LD_LIBRARY_PATH=/home/opc/work/instantclient_12_1:$LD_LIBRARY_PATH
$ export TNS_ADMIN=/home/opc/work/wallet
java -classpath /home/opc/work/instantclient_12_1/ojdbc6.jar:. GetContainerName
Container Name => VRWV9351YZ4NXNS_DB201906031608
Connection using JDBC-OCI driver using Wallets https://www.oracle.com/technetwork/database/application-development/jdbc-eecloud-3089380.html#jdbcoci
Quelle est la relation entre la version d'Oracle JDBC et la version de JDK? https://www.oracle.com/technetwork/jp/database/application-development/jdbc/overview/default-090281-ja.html#01_03_1
Guide de démarrage du pilote Oracle JDBC - Installation, certification, etc. (ID de document 1999901.1) * Connexion requise https://support.oracle.com/epmos/faces/DocumentDisplay?id=1999901.1
La base de données autonome doit communiquer avec TLSv1.2, c'est un équipement standard dans JDK8 ou version ultérieure, et un correctif pour le port arrière est fourni dans JDK7, mais il semble que ce port arrière ne soit pas fourni dans ~~ JDK6. Est-ce que ça va être douloureux? ~~ 彡 (゚) (゚)
- JDBC Thin Connections and Wallets
https://docs.oracle.com/en/cloud/paas/autonomous-data-warehouse-cloud/user/connect-jdbc-thin-wallet.html#GUID-5ED3C08C-1A84-4E5A-B07A-A5114951AA9EAutonomous Data Warehouse mandates a secure connection that uses Transport Layer Security (TLSv1.2).
- Configuration logicielle requise pour la connectivité à l'aide de JDBC Thin et UCP https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connecting-jdbc-thin-driver.html#GUID-EEB8AC2B-AE63-486A-A7DB-96460DCA881E
Téléchargez le pilote léger JDBC 12.1.0.2 patché (ojdbc7.jar) et UCP 12.1.0.2 (ucp.jar) et ajoutez leur emplacement à votre chemin de classe.
- Doc ID 2122800.1 "Erreur IO: aucun protocole approprié" lors de la tentative de connexion à Oracle Database 12.1 avec les protocoles TLSv1.1 et TLSv1.2 * Connexion requise https://support.oracle.com/epmos/faces/DocumentDisplay?id=2122800.1
(Ajout) Il a été confirmé ci-dessous qu'il est possible de se connecter avec JDK6 + JDBC Thin Driver 12.1.0.2. Veuillez vous référer à ceux qui ont un contrat de support.
- Téléchargez et installez JDK6 u211 (JDK6 u181 ou version ultérieure) à partir du Doc ID 1534791.1
- Installer le client Oracle (* pas instantané) 12.1.0.2
- Appliquer le PSU 12.1.0.2.20190716 (patch 29494060) au client Oracle
- Appliquer le correctif individuel 23176395 (* Version fusionnée de 204 26934, 19030178, 19154304) au client Oracle
- Appliquer le correctif individuel 25797943 (* version 12.1.0.2 sélectionnée) au client Oracle
- Connectez-vous en spécifiant le pilote JDBC (ojdbc6.jar) et divers jars sous le client Oracle auxquels le backport par Patch est appliqué.
Les informations de référence sont les suivantes.
- Java SE and JRockit Archived Downloads on MOS for Java Versions that Have Reached EOL (Doc ID 1534791.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?id=1534791.1- JDBC TLS Connections Fail with java.io.EOFException: SSL peer shut down incorrectly After Patching the Database With APRIL 2018 PSU + TLS 1.2 Patch:28362304 (Doc ID 2477104.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?id=2477104.1- JDBC Thin Driver receives "java.security.NoSuchAlgorithmException: SSO KeyStore not available" (Doc ID 2321763.1)
https://support.oracle.com/epmos/faces/DocumentDisplay?id=2321763.1- "Erreur IO: aucun protocole approprié" lors de la tentative de connexion à Oracle Database 12.1 avec les protocoles TLSv1.1 et TLSv1.2 (ID de document 2122800.1) https://support.oracle.com/epmos/faces/DocumentDisplay?id=2122800.1
- Java SE 6 Advanced and Java SE 6 Support (formerly known as Java SE for Business 6) Release Notes
https://www.oracle.com/technetwork/java/javase/downloads/overview-156328.html#R160_181
⇒ (6u181)The SHA224withDSA and SHA256withDSA algorithms are now supported in the TLS 1.2- Comment configurer le pilote léger Oracle JDBC pour se connecter à la base de données à l'aide de TLS v1.2 (ID de document 2436911.1) https://support.oracle.com/epmos/faces/DocumentDisplay?id=2436911.1