Essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).

Par conséquent, essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).

1. Téléchargez et décompressez Oracle Instant Client 12.1.0.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

2. Téléchargez et décompressez le portefeuille Autonomous Database

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

3. Modifiez sqlnet.ora dans le portefeuille de la base de données autonome

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")))

4. Exemple de code pour les tests

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";

5. Compilez et exécutez le code

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

6. Document de référence

  • 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

Supplément: Puis-je me connecter avec Thin Driver?

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-A5114951AA9E

Autonomous 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

Recommended Posts

Essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).
Essayez de vous connecter à la base de données OCI (DBaaS) PDB avec le pilote léger JDBC de Java. (Oracle Cloud Infrastructure)
Essayez de vous connecter à Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java. (OCI, infrastructure Oracle Cloud)
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base
Essayez de vous connecter à l'émulateur AzureCosmosDB pour Docker avec Java
[JDBC] J'ai essayé d'accéder à la base de données SQLite3 depuis Java.
Exemple de code pour obtenir les valeurs de type JDBC clés dans la base de données Java + H2
Essayez d'utiliser la télécommande Wii en Java
Essayez d'intégrer Ruby et Java avec Dapr
Essayez d'implémenter TCP / IP + NIO avec JAVA
[Java / PostgreSQL] Connectez l'application WEB à la base de données
[Java] Essayez de résoudre le problème de Fizz Buzz
Essayez de résumer la disposition commune avec des rails
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
Paramètres de connexion à MySQL avec Spring Boot + Spring JDBC
Organisé comment interagir avec le JDK par étapes
Connexion HTTPS avec Java au serveur de certificats auto-signé
Je veux renvoyer un type différent de l'élément d'entrée avec Java8 StreamAPI Reduce ()
[Java] Modifier le traitement en fonction de la situation avec le modèle de stratégie
Trouvez la classe d'adresse et le type d'adresse à partir de l'adresse IP avec Java
[Débutant] Essayez de créer un jeu RPG simple avec Java ①
Initialisation avec une chaîne vide vers une instance de type Java String
[Java] Pour connaître les informations de type des paramètres de type à l'exécution
Assurez-vous de comparer le résultat Java compareTo avec 0
Comment gérer le type auquel j'ai pensé en écrivant un programme Java pendant 2 ans
Lisez les données de Shizuoka Prefecture Point Cloud DB avec Java et essayez de détecter la hauteur de l'arbre.