Versuchen Sie daher, mit JDK6 (Java) + JDBC OCI-Treiber (Typ 2) eine Verbindung zur autonomen Datenbank herzustellen.
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
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
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")))
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";
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
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
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-A5114951AA9EAutonomous 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