Versuchen Sie, mit JDK6 (Java) + JDBC OCI-Treiber (Typ 2) eine Verbindung zur autonomen Datenbank herzustellen.

Versuchen Sie daher, mit JDK6 (Java) + JDBC OCI-Treiber (Typ 2) eine Verbindung zur autonomen Datenbank herzustellen.

1. Laden Sie Oracle Instant Client 12.1.0.2 herunter und entpacken Sie es

Laden Sie den Oracle Instant Client herunter. Laden Sie den 12.1.0.2 Instant Client herunter, der ojdbc6.jar für JDK6 enthält.

  • 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

Dieses Mal wird davon ausgegangen, dass es zu / home / opc / work / instantclient_12_1 / erweitert wird.

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. Laden Sie die Brieftasche für autonome Datenbanken herunter und entpacken Sie sie

Laden Sie die Brieftasche für autonome Datenbanken herunter und entpacken Sie sie. Bitte beachten Sie die folgenden Artikel.

  • Stellen Sie mit Golang eine Verbindung zu einer autonomen Datenbank (Autonomous Transaction Processing) her 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. Bearbeiten Sie sqlnet.ora in der Brieftasche für autonome Datenbanken

Durch das Extrahieren der Brieftaschen-Zip-Datei wird sqlnet.ora generiert. Schreiben Sie jedoch das VERZEICHNIS dieser sqlnet.ora in das Brieftaschen-Extraktionsverzeichnis.

WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="?/network/admin")))
↓
WALLET_LOCATION = (SOURCE = (METHOD = file) (METHOD_DATA = (DIRECTORY="/home/opc/work/wallet")))

4. Beispielcode zum Testen

Es ist ein verschiedener Code, der keine Ressourcen endgültig freigegeben hat, aber vergib mir Clements ……: (; ゚ 'ω ゚'): Sie können die Try-with-Resources-Syntax mit JDK6 nicht verwenden. 彡 (゜) (゜)

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

Der Punkt ist hier der JDBC-URL. Geben Sie die Verbindungszeichenfolge von tnsnames.ora an, während Sie den oci-Treiber angeben.

final String path = "jdbc:oracle:oci:@dbxxxxxxxx_tp";

5. Kompilieren Sie den Code und führen Sie ihn aus

Kompilieren und mit javac ausführen. Geben Sie zur Laufzeit die folgenden Umgebungsvariablen an.

  • LD_LIBRARY_PATH
    ⇒ Geben Sie das Verzeichnis an, in das Sie Oracle Instant Client extrahiert haben.
  • TNS_ADMIN
    ⇒ Geben Sie das Verzeichnis an, in dem die Brieftasche für autonome Datenbanken erweitert wird.

Der Ausführungsbefehl lautet wie folgt.

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

Das Ausführungsergebnis ist wie folgt, es hat gut funktioniert! 彡 (^) (^)

$ 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. Referenzdokument

  • Connection using JDBC-OCI driver using Wallets https://www.oracle.com/technetwork/database/application-development/jdbc-eecloud-3089380.html#jdbcoci

  • Welche Beziehung besteht zwischen der Veröffentlichung von Oracle JDBC und der Version von JDK? https://www.oracle.com/technetwork/jp/database/application-development/jdbc/overview/default-090281-ja.html#01_03_1

  • Erste Schritte mit dem Oracle JDBC-Treiber - Installation, Zertifizierung usw. (Dokument-ID 1999901.1) * Anmeldung erforderlich https://support.oracle.com/epmos/faces/DocumentDisplay?id=1999901.1

Ergänzung. Kann ich mich mit Thin Driver verbinden?

Autonome Datenbank muss mit TLSv1.2 kommunizieren, es ist Standardausrüstung in JDK8 oder höher und ein Patch für den Backport ist in JDK7 enthalten, aber es scheint, dass dieser Backport in ~~ JDK6 nicht bereitgestellt wird. Wird es schmerzhaft sein? ~~ 彡 (゚) (゚)

  • 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).

  • Softwareanforderungen für die Konnektivität mit JDBC Thin und UCP https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connecting-jdbc-thin-driver.html#GUID-EEB8AC2B-AE63-486A-A7DB-96460DCA881E

Laden Sie den gepatchten 12.1.0.2 JDBC Thin-Treiber (ojdbc7.jar) und 12.1.0.2 UCP (ucp.jar) herunter und fügen Sie deren Speicherort Ihrem Klassenpfad hinzu.

  • Doc ID 2122800.1 "E / A-Fehler: Kein geeignetes Protokoll" Beim Versuch, mit TLSv1.1- und TLSv1.2-Protokollen eine Verbindung zu Oracle Database 12.1 herzustellen * Anmeldung erforderlich https://support.oracle.com/epmos/faces/DocumentDisplay?id=2122800.1

(Ergänzung) Im Folgenden wurde bestätigt, dass eine Verbindung mit JDK6 + JDBC Thin Driver 12.1.0.2 möglich ist. Bitte wenden Sie sich an diejenigen, die einen Supportvertrag haben.

  • Laden Sie JDK6 u211 (JDK6 u181 oder höher) von der Doc ID 1534791.1 herunter und installieren Sie es
  • Oracle Client installieren (* nicht sofort) 12.1.0.2
  • Wenden Sie das Netzteil 12.1.0.2.20190716 (Patch 29494060) auf den Oracle-Client an
  • Wenden Sie den einzelnen Patch 23176395 (* Zusammengeführte Version von 204 26934, 19030178, 19154304) auf Oracle Client an
  • Wenden Sie den einzelnen Patch 25797943 (* Version 12.1.0.2 ausgewählt) auf Oracle Client an
  • Stellen Sie eine Verbindung her, indem Sie den JDBC-Treiber (ojdbc6.jar) und verschiedene Jars unter dem Oracle-Client angeben, auf den der Backport per Patch angewendet wird.

Referenzinformationen sind wie folgt.

  • 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
  • "E / A-Fehler: Kein geeignetes Protokoll" Beim Versuch, eine Verbindung zu Oracle Database 12.1 mit den Protokollen TLSv1.1 und TLSv1.2 herzustellen (Dokument-ID 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
  • So konfigurieren Sie den Oracle JDBC Thin Driver für die Verbindung mit der Datenbank mithilfe von TLS v1.2 (Dokument-ID 2436911.1) https://support.oracle.com/epmos/faces/DocumentDisplay?id=2436911.1

Recommended Posts

Versuchen Sie, mit JDK6 (Java) + JDBC OCI-Treiber (Typ 2) eine Verbindung zur autonomen Datenbank herzustellen.
Versuchen Sie, mit Javas JDBC Thin Driver eine Verbindung zum OCB-Datenbank-PDB (DBaaS) herzustellen. (Oracle Cloud Infrastructure)
Versuchen Sie, mit dem JDBC Thin Driver von Java eine Verbindung zu Autonomous DB (ADW / ATP) herzustellen. (OCI, Oracle Cloud Infrastructure)
Herstellen einer Verbindung zu einer Datenbank mit Java (Teil 1) Möglicherweise die grundlegende Methode
Versuchen Sie, mit Java eine Verbindung zu AzureCosmosDB Emulator for Docker herzustellen
[JDBC] Ich habe versucht, von Java aus auf die SQLite3-Datenbank zuzugreifen.
Beispielcode zum Abrufen der wichtigsten JDBC-Typwerte in der Java + H2-Datenbank
Versuchen Sie es mit der Wii-Fernbedienung in Java
Versuchen Sie, Ruby und Java in Dapr zu integrieren
Versuchen Sie, TCP / IP + NIO mit JAVA zu implementieren
[Java / PostgreSQL] Verbinden Sie die WEB-Anwendung mit der Datenbank
[Java] Versuchen Sie, das Fizz Buzz-Problem zu lösen
Versuchen Sie, das gemeinsame Layout mit Schienen zusammenzufassen
Zusammenfassung der Verwendung des im IE festgelegten Proxy-Sets bei der Verbindung mit Java
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Organisierte schrittweise Interaktion mit dem JDK
HTTPS-Verbindung mit Java zum selbstsignierten Zertifikatsserver
Ich möchte mit Java8 StreamAPI redu () einen anderen Typ als das Eingabeelement zurückgeben.
[Java] Ändern Sie die Verarbeitung entsprechend der Situation mit dem Strategiemuster
Suchen Sie die Adressklasse und den Adresstyp aus der IP-Adresse mit Java
[Anfänger] Versuchen Sie, mit Java ein einfaches RPG-Spiel zu erstellen ①
Initialisierung mit einer leeren Zeichenfolge für eine Instanz vom Typ Java-Zeichenfolge
[Java] Um die Typinformationen der Typparameter zur Laufzeit zu kennen
Stellen Sie sicher, dass Sie das Java compareTo-Ergebnis mit 0 vergleichen
Wie gehe ich mit dem Typ um, den ich 2 Jahre lang über das Schreiben eines Java-Programms nachgedacht habe?
Lesen Sie die Daten der Shizuoka Prefecture Point Cloud DB mit Java und versuchen Sie, die Baumhöhe zu ermitteln.