Essayez de vous connecter à Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java. (OCI, infrastructure Oracle Cloud)

Comme le titre l'indique, Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java J'essaierai de me connecter. Essayez-le avec la configuration suivante 彡 (゜) (゜)

Compute(Java, JDBC Thin Driver) ⇒ Autonomous DB(ADW/ATP)

Ceci est une continuation de l'article précédent.

Avec le pilote léger JDBC de Java sur la base de données OCI (DBaaS) PDB Essayez de vous connecter. (Oracle Cloud Infrastructure) https://qiita.com/ora_gonsuke777/items/0e6c7d25d9977de45531

1. Qu'est-ce que la base de données autonome (ADW / ATP)?

Autonomous DB est un service cloud pour les bases de données entièrement gérées fourni par ORACLE.

Avec ADW (Autonomous Data Warehouse) pour DWH Il existe ATP (Autonomous Transaction Processing) adapté à OLTP. 彡 (゚) (゚)

Autonomous Data Warehouse https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/

Autonomous Transaction Processing https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/

2. Points lors de la connexion à Autonomous DB (ADW / ATP) (* Wallet requis)

La différence entre la connexion à une base de données Oracle standard et la connexion à une base de données autonome (ADW / ATP) Un point est que la communication cryptée à l'aide d'un portefeuille est essentielle.

À propos de la connexion à l'instance Autonomous Data Warehouse https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-intorduction.html#GUID-CD4C10A6-1C1E-4969-8F67-1433B6CE626A

À propos de la connexion à l'instance de traitement de transaction autonome https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connect-intorduction.html#GUID-CD4C10A6-1C1E-4969-8F67-1433B6CE626A

Pour la connexion avec sqlplus ou SQL Developer, reportez-vous au manuel suivant 彡 (゚) (゚)

Connectez-vous avec Oracle SQL Developer (18.2) ou supérieur https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-sql-dev182.html#GUID-14217939-3E8F-4782-BFF2-021199A908FD

Connect with SQL*Plus https://docs.oracle.com/cd/E83857_01/paas/autonomous-data-warehouse-cloud/user/connect-sqlplus.html#GUID-A3005A6E-9ECF-40CB-8EFC-D1CFF664EC5A

Spécifier le portefeuille par certains moyens est une condition essentielle pour la connexion ADW / ATP. Dans cet article, je vais essayer quelques connexions avec le pilote JDBC Thin + TNS_ADMIN.

3. Téléchargez et décompressez le portefeuille, version complète du pilote JDBC

Il y a plusieurs étapes, mais exécutez "Plain JDBC using Oracle Wallets" dans le manuel suivant.

Java Connectivity with Autonomous Database (ATP or ADW) using 18.3 JDBC https://www.oracle.com/technetwork/database/application-development/jdbc/documentation/atp-5073445.html

Veuillez vous référer à ce qui suit pour télécharger et agrandir le portefeuille.

Se connecter à une base de données autonome (Autonomous Transaction Processing) à l'aide de Golang https://qiita.com/sugimount/items/69e11c116a895c9feb97

#Déployer le portefeuille pour la base de données autonome
unzip Wallet_xxxxxx.zip

La dernière version (18.3) du pilote JDBC est la suivante pour le moment (2019/2/26), mais veuillez vous référer à la dernière version.

Oracle Database 18c (18.3) JDBC Driver & UCP Downloads https://www.oracle.com/technetwork/database/application-development/jdbc/downloads/jdbc-ucp-183-5013470.html

Téléchargez ojdbc8-full.tar.gz et décompressez-le sur Compute (tar xvzf ~).

#Version complète du pilote JDBC déployé
tar xvzf ojdbc8-full.tar.gz

Le portefeuille se trouve dans /home/opc/app/opc/product/18.0.0/client_1/network/admin, Il est supposé que le pilote JDBC est étendu à / home / opc / work / ojdbc8-full respectivement.

# Wallet(TNS_ADMIN)
ls -la /home/opc/app/opc/product/18.0.0/client_1/network/admin

total 76
drwxr-xr-x.  3 opc opc  4096 Feb 25 16:26 .
drwxr-xr-x. 10 opc opc  4096 Jan 17 06:46 ..
-rw-rw-r--.  1 opc opc  6661 Feb 25 15:01 cwallet.sso
-rw-rw-r--.  1 opc opc  6616 Feb 25 15:01 ewallet.p12
-rw-rw-r--.  1 opc opc  3242 Feb 25 15:01 keystore.jks
-rw-rw-r--.  1 opc opc    87 Feb 25 15:01 ojdbc.properties
drwxr-xr-x.  2 opc opc  4096 Jan 17 06:44 samples
-rw-r--r--.  1 opc opc  1441 Aug 26  2015 shrept.lst
-rw-rw-r--.  1 opc opc   114 Feb 25 15:01 sqlnet.ora
-rw-rw-r--.  1 opc opc   155 Feb  4 11:23 sqlnet.ora.bak
-rw-rw-r--.  1 opc opc  2771 Feb 25 15:01 tnsnames.ora
-rw-rw-r--.  1 opc opc  3336 Feb 25 15:01 truststore.jks
-rw-rw-r--.  1 opc opc 19823 Feb 25 15:01 Wallet_xxxxxx.zip

# JDBC Driver full
ls -la /home/opc/work/ojdbc8-full

total 8328
drwx------.  2 opc opc    4096 Aug 20  2018 .
drwxrwxr-x. 22 opc opc    4096 Feb 25 15:33 ..
-r--r--r--.  1 opc opc 4161744 Aug  2  2018 ojdbc8.jar
-r-xr-xr-x.  1 opc opc   11596 Aug  2  2018 ojdbc.policy
-r--r--r--.  1 opc opc  144428 Aug  2  2018 ons.jar
-r--r--r--.  1 opc opc  307817 Aug  2  2018 oraclepki.jar
-r--r--r--.  1 opc opc 1661545 Aug  2  2018 orai18n.jar
-r--r--r--.  1 opc opc  205152 Aug  2  2018 osdt_cert.jar
-r--r--r--.  1 opc opc  306854 Aug  2  2018 osdt_core.jar
-rw-r--r--.  1 opc opc    2595 Aug 20  2018 README.txt
-r--r--r--.  1 opc opc   29103 Aug  2  2018 simplefan.jar
-r--r--r--.  1 opc opc 1398331 Aug  2  2018 ucp.jar
-r--r--r--.  1 opc opc  262415 Aug  2  2018 xdb6.jar

4. Méthode 1: écrivez le chemin du portefeuille (TNS_ADMIN) dans l'URL JDBC

Dans JDBC 18.3, le chemin du portefeuille est TNS_ADMIN Il peut être décrit dans l'URL JDBC.

Spécifié dans l'URL. Voici un exemple: https://docs.oracle.com/cd/E83857_01/paas/atp-cloud/atpug/connect-jdbc-thin-wallet.html#GUID-F1D7452F-5E67-4418-B16B-B6A7B92F26A4 final static String DB_URL="jdbc:oracle:thin:@atpconnection_low?TNS_ADMIN=.";

Dans cet écrit, la chaîne de connexion utilise le descripteur dans tnsnames.ora. L'échantillon est ci-dessous

import java.sql.*;

public class GetContainerName {
    public static void main(String[] args) {
        final String path = "jdbc:oracle:thin:@xxxxxx_high?TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin";
        final String id = "ADMIN";  //ID
        final String pw = "xxxxxxxxxxxxx";  //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
        }
    }
}

Compilez et exécutez ci-dessous. Description de Manual Rue oraclepki.jar, Incluez osdt_core.jar et osdt_cert.jar dans le chemin de classe. 彡 (゚) (゚)

export JAVA_HOME=/home/opc/work/jdk-11.0.2
export PATH=${JAVA_HOME}/bin:${PATH}

javac GetContainerName.java

java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\
/home/opc/work/ojdbc8-full/ucp.jar:\
/home/opc/work/ojdbc8-full/oraclepki.jar:\
/home/opc/work/ojdbc8-full/osdt_core.jar:\
/home/opc/work/ojdbc8-full/osdt_cert.jar:. \
GetContainerName

Container Name => VRWV9351YZ4NXNS_XXXXXX

Succès (`・ ω ・) Ъ

5. Méthode 2: spécifiez le chemin du portefeuille (TNS_ADMIN) comme variable d'environnement

Spécifiez le chemin du portefeuille dans la variable d'environnement TNS_ADMIN. Dans ce cas, il n'est pas nécessaire de décrire TNS_ADMIN dans l'URL JDBC, et la source est la suivante 彡 (゚) (゚)

import java.sql.*;

public class GetContainerName {
    public static void main(String[] args) {
        final String path = "jdbc:oracle:thin:@xxxxxx_high";
        final String id = "ADMIN";  //ID
        final String pw = "xxxxxxxxxxxxx";  //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
        }
    }
}

Les résultats de la compilation et de l'exécution sont les suivants.

export JAVA_HOME=/home/opc/work/jdk-11.0.2
export PATH=${JAVA_HOME}/bin:${PATH}

javac GetContainerName.java

export TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin

java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\
/home/opc/work/ojdbc8-full/ucp.jar:\
/home/opc/work/ojdbc8-full/oraclepki.jar:\
/home/opc/work/ojdbc8-full/osdt_core.jar:\
/home/opc/work/ojdbc8-full/osdt_cert.jar:. \
GetContainerName

Container Name => VRWV9351YZ4NXNS_XXXXXX

Réussir à nouveau (`・ ω ・) Ъ

6. Méthode 3: spécifiez le chemin du portefeuille (TNS_ADMIN) comme propriété système avec -D

Définissez le chemin du portefeuille comme propriété système oracle.net.tns_admin Spécifiez avec l'option -D. La source java est la même que 5. ci-dessus, elle est donc omise.

La commande d'exécution est la suivante.

export JAVA_HOME=/home/opc/work/jdk-11.0.2
export PATH=${JAVA_HOME}/bin:${PATH}

javac GetContainerName.java

unset TNS_ADMIN

java -classpath /home/opc/work/ojdbc8-full/ojdbc8.jar:\
/home/opc/work/ojdbc8-full/ucp.jar:\
/home/opc/work/ojdbc8-full/oraclepki.jar:\
/home/opc/work/ojdbc8-full/osdt_core.jar:\
/home/opc/work/ojdbc8-full/osdt_cert.jar:. \
-Doracle.net.tns_admin=/home/opc/app/opc/product/18.0.0/client_1/network/admin \
GetContainerName

Container Name => VRWV9351YZ4NXNS_XXXXXX

Succès trois fois (`・ ω ・) Ъ

7. Résumé

En spécifiant le chemin de classe de oraclepki.jar, osdt_core.jar, osdt_cert.jar J'en suis accro ... Tout d'abord, la voie royale est de suivre le manuel. 彡 (-) (-)

Recommended Posts

Essayez de vous connecter à Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java. (OCI, infrastructure Oracle Cloud)
Essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).
Essayez de vous connecter à Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java. (OCI, infrastructure Oracle Cloud)
Essayez de vous connecter à la base de données autonome avec JDK6 (Java) + pilote JDBC OCI (type 2).
Comment créer une URL JDBC (Oracle Database, Thin)
Connexion à une base de données avec Java (partie 1) Peut-être la méthode de base