[JAVA] So erstellen Sie eine JDBC-URL (Oracle Database, Thin)

Lassen Sie uns schreiben, wie eine JDBC-URL erstellt wird (Oracle Database, Thin) 彡 (゚) (゚)

1. Beschreibung des JDBC-Handbuchs

Die Beschreibung des Handbuchs lautet wie folgt.

8.2 Datenbank-URL und Datenbankspezifizierer https://docs.oracle.com/cd/E96517_01/jjdbc/data-sources-and-URLs.html#GUID-C4F2CA86-0F68-400C-95DA-30171C9FB8F0 Die Datenbank-URL ist eine Zeichenfolge. Die vollständige URL-Syntax lautet: jdbc:oracle:driver_type:[username/password]@database_specifier  
8.2.4 Syntax für Dienstnamen mit dünnem Format https://docs.oracle.com/cd/E96517_01/jjdbc/data-sources-and-URLs.html#GUID-EF07727C-50AB-4DCE-8EDC-57F0927FF61A Thin-Format-Dienstnamen werden nur vom JDBC-Thin-Treiber unterstützt. Die Syntax lautet wie folgt: @//host_name:port_number/service_name

Da es sich bei der obigen Beschreibung um die einfache Verbindung (EZ CONNECT) selbst handelt, ist auch das Handbuch für die einfache Verbindung verknüpft. 彡 (゚) (゚)

8.1 Grundlegendes zu einfachen Verbindungsbenennungsmethoden https://docs.oracle.com/cd/E96517_01/netag/configuring-naming-methods.html#GUID-B0437826-43C1-49EC-A94D-B650B6A4A6EE CONNECT username@[//]host[:port][/service_name][:server][/instance_name]

In der Regel können Sie eine JDBC-URL erstellen, indem Sie den Hostnamen / die Portnummer / den Dienstnamen angeben. Da es der Hörer ist, der diese verwaltet, zunächst eine kurze Erklärung der Rolle des Hörers.

2. Hörerrolle

Der Listener ist ein Prozess, der sich auf dem Server befindet und Verbindungsanforderungen von Clients stellt. Der Prozess des Abhörens und Verwaltens / Zulassens von Verbindungen zur Oracle-Datenbank.

Dies ist ein Beispiel für eine dedizierte Serververbindung. Der folgende Artikel ist jedoch leicht zu verstehen, wie der Listener funktioniert.

Was ist eine Verbindung? https://www.oracle.com/technetwork/jp/articles/chapter5-1-101584-ja.html#p01b

Ein oder mehrere Sätze von Hostnamen (IP-Adresse) / Portnummer sind für den Listener definiert. Der Datenbankdienst wird dynamisch bei diesem Listener registriert.

Wenn der Befehl lsnrctl status ausgeführt wird, werden der Hostname (IP-Adresse) / die Portnummer und Sie können die registrierten Datenbankdienste überprüfen. Das Folgende ist ein Beispiel 彡 (゜) (゜)

$ lsnrctl status LISTENER

LSNRCTL for Linux: Version 18.0.0.0.0 - Production on 30-APR-2019 23:39:27
:
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=0.0.0.0)(PORT=1521)))★ Hostname und Portnummer
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8081))(Presentation=HTTP)(Session=RAW))
:
Services Summary...
Service "64a52f53a7683286e053cda9e80aed76" has 1 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "784ac9d638bb5f59e0530100007f6047" has 1 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "AYSTEST" has 1 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "orclcdb" has 2 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status UNKNOWN, has 1 handler(s) for this service...
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "orclcdbXDB" has 1 instance(s).★ Als Hörer registrierte Dienste
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
The command completed successfully

3. Was ist ein Datenbankdienst?

Datenbankdienste werden verwendet, um Oracle Database-Workloads zu identifizieren. Es wird ein logischer Alias vergeben. Sie können mehrere Services in einer Oracle-Datenbankumgebung erstellen.

Der folgende Artikel ist leicht zu verstehen Yade 彡 (゜) (゜)

Teil 3 Verbindung über Netzwerk herstellen https://www.oracle.com/technetwork/jp/database/articles/kusakabe/kusakabe-3-4490049-ja.html 4.2 Dienste Bis Oracle8 ... (Ausgelassen) ... Es war die SID, die die Oracle-Instanzkennung darstellt ... (Ausgelassen) ... Oracle Database 10g erweitert das Konzept von Diensten auf abstrakte Workloads ... (...) ... Der hinzugefügte Dienst wird vom dynamischen Dienstregistrierungsmechanismus beim Oracle-Listener registriert.

Beschreiben Sie diesen Datenbankdienstnamen als Verbindungsziel, z. B. JDBC-URL / tnsnames.ora / Easy Connection (EZCONNECT).

4. Beispiel 1: Überprüfen Sie die Verbindung, während Sie die JDBC-URL in sqlcl angeben

Versuchen Sie, eine JDBC-Beispiel-URL mit sqlcl (Befehlszeilenversion von SQL Developer) zu schreiben. 彡 (゚) (゚) Versuchen Sie, eine Verbindung zum AYTEST-Dienst in 2. oben herzustellen. Die JDBC-URL für diesen Fall lautet:

jdbc:oracle:driver_type:[username/password]@//host_name:port_number/service_name ↓ jdbc:oracle:thin:@//0.0.0.0:1521/AYTEST

Das Ausführungsbeispiel ist unten dargestellt. Die JDBC-URL befindet sich unmittelbar nach dem Benutzernamen des Befehls CONNECT hinter der Markierung @. Sie können die JDBC-URL auch mit dem Befehl sqlcl SHOW JDBC überprüfen.

cd /home/oracle/sqldeveloper/sqldeveloper/bin
./sql /nolog
CONNECT AYSHIBAT@jdbc:oracle:thin:@//0.0.0.0:1521/AYSTEST
SHOW JDBC

SQLcl: Release 18.3 Production on Wed May 01 01:06:43 2019

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Password? (**********?) ********
Connected.

-- Database Info --
Database Product Name: Oracle
:
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 18.3.0.0.0
Driver Major Version: 18
Driver Minor Version: 3
Driver URL: jdbc:oracle:thin:@//0.0.0.0:1521/AYSTEST ★JDBC URL
:

5. Beispiel 2: Stellen Sie eine Verbindung zur OCI DB (DBaaS) -CDB her, während Sie die JDBC-URL mit sqlcl angeben

Ich werde ein Beispiel schreiben, um eine Verbindung zur CDB der OCI-Datenbank (Oracle Cloud Infrastructure) (DBaaS) mit der SQLBC-JDBC-URL 彡 (゚) (゚) herzustellen. Versuchen Sie es mit dem Beispiel aus dem folgenden Artikel.

Versuchen Sie, mit sqlplus eine Verbindung zum OCA-Datenbank-PDB (DBaaS) herzustellen. (Oracle Cloud Infrastructure) https://gonsuke777.hatenablog.com/entry/2019/02/19/211953 : Verbindungszeichenfolge zum Verwaltungsdienst (CDB) (einfache Verbindung): dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com :

Die JDBC-URL lautet im obigen Fall wie folgt.

jdbc:oracle:driver_type:[username/password]@//host_name:port_number/service_name ↓ jdbc:oracle:thin:@//dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com

Das Verbindungsbeispiel von sqlcl lautet wie folgt: 彡 (゜) (゜)

./sql /nolog
CONNECT SYSTEM@jdbc:oracle:thin:@//dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_iad32r.subnetname.vcnname.oraclevcn.com
SHOW JDBC;

Password? (**********?) ********
Connected.

-- Database Info --
Database Product Name: Oracle
:
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 12.2.0.1.0
Driver Major Version: 12
Driver Minor Version: 2
Driver URL: jdbc:oracle:thin:@//dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_iad32r.subnetname.vcnname.oraclevcn.com ★JDBC URL
:

6. Beispiel 3: JDBC-URL für autonome Datenbank (ATP / ADW)

Die JDBC-URL für autonome DB (ADW / ATP) finden Sie im folgenden Artikel 彡 (゚) (゚)

Versuchen Sie, mit Javas JDBC Thin Driver eine Verbindung zur autonomen Datenbank (ADW / ATP) herzustellen. (OCI, Oracle Cloud Infrastructure) https://gonsuke777.hatenablog.com/entry/2019/02/26/023534

Geben Sie den Speicherort der Brieftasche in TNS_ADMIN in irgendeiner Weise an. Wenn Sie TNS_ADMIN direkt in die JDBC-URL schreiben, 彡 (゚) (゚)

  1. Methode 1: Schreiben Sie den Wallet-Pfad (TNS_ADMIN) in die JDBC-URL https://gonsuke777.hatenablog.com/entry/2019/02/26/023534#4-%E6%96%B9%E6%B3%951%E3%82%A6%E3%82%A9%E3%83%AC%E3%83%83%E3%83%88%E3%81%AE%E3%83%91%E3%82%B9TNS_ADMIN-%E3%82%92-JDBC-URL-%E3%81%AB%E8%A8%98%E8%BF%B0

    ★ Das Folgende ist die JDBC-URL jdbc:oracle:thin:@xxxxxx_high?TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin

Siehe den Artikel für die Ergebnisse.

7. Beispiel 4: Schreiben Sie die JDBC-URL in einem tnsnames.ora-ähnlichen Format

Wie in [Handbuch] beschrieben (https://docs.oracle.com/cd/E96517_01/jjdbc/data-sources-and-URLs.html#GUID-6F729E4D-064B-4FD9-AE92-1BD44B8BE5EF) Die JDBC-URL kann auch wie tnsnames.ora geschrieben werden. Das Folgende ist das Beispiel 彡 (゜) (゜)

* Eigentlich in einer Zeile beschrieben
jdbc:oracle:thin:@
(DESCRIPTION_LIST=
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=dbname.subnetname.vcnname.oraclevcn.com)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=dbname_iad32r.subnetname.vcnname.oraclevcn.com))
  )
  (DESCRIPTION=
    (ADDRESS=(PROTOCOL=tcp)(HOST=dbname-scan.subnetname.vcnname.oraclevcn.com)(PORT=1521))
    (CONNECT_DATA=(SERVICE_NAME=dbname_iad32r.subnetname.vcnname.oraclevcn.com))
  )
)

Das Verbindungsbeispiel mit sqlcl lautet wie folgt: long (゚) (゚) Befehl lang.

./sql /nolog
CONNECT SYSTEM@jdbc:oracle:thin:@(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbname_iad32r.subnetname.vcnname.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=aysdb121_iad1rn.sub12070931430.vcnname.oraclevcn.com)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbname-scan.subnetname.vcnname.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dbname_iad32r.subnetname.vcnname.oraclevcn.com))))
SHOW JDBC

SQLcl: Release 19.1 Production on Wed May 01 06:20:39 2019

Copyright (c) 1982, 2019, Oracle.  All rights reserved.
Password? (**********?) ***************
Connected.

-- Database Info --
Database Product Name: Oracle
:
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 18.3.0.0.0
Driver Major Version: 18
Driver Minor Version: 3
Driver URL: jdbc:oracle:thin:@(DESCRIPTION_LIST=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbname_iad32r.subnetname.vcnname.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=aysdb121_iad1rn.sub12070931430.vcnname.oraclevcn.com)))(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=dbname-scan.subnetname.vcnname.oraclevcn.com)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=dbname_iad32r.subnetname.vcnname.oraclevcn.com))))
:

8. Zusammenfassung

Ich frage mich, ob es einen schlechten Ruf hat, weil ich so etwas wie 7. oben schreiben kann (゜) (゜)

Dieser Bereich ist Teil von Oracle MAA (Maximum Availability Architecture). Failover der Verbindungszeit, clientseitiger Lastausgleich usw. Mir ist bewusst, dass dies der Fall ist, daher ist es notwendig, sich zu bemühen, dies zu verstehen (゜ ε ゜).

Wenn Sie die einfache Verbindung (EZ CONNECT) verstehen, sollten Sie Angst haben! Verbinden (?) Immer mehr 彡 (^) (^)

Bonus. Beispiel: Stellen Sie mit sqlcl eine Verbindung zur autonomen Datenbank (ATP / ADW) her

Geben Sie für sqlcl die Brieftasche mit dem Befehl set cloudconfig an. Folgendes wird hilfreich sein.

Oracle Cloud: Ich habe versucht, eine SQLcl-Verbindung zur autonomen Datenbank herzustellen https://qiita.com/shirok/items/86355be72a47a840d10e

Die JDBC-URL nach dem Festlegen von cloudconfig lautet wie folgt, etwas Kompliziertes (゜) (゜)

./sql /nolog
set cloudconfig /home/opc/app/opc/product/18.0.0/client_1/network/admin/Wallet_aysatp01.zip
CONNECT ADMIN@aysatp01_low
SHOW JDBC


SQLcl: Release 19.1 Production on Wed May 01 05:58:28 2019

Copyright (c) 1982, 2019, Oracle.  All rights reserved.

Operation is successfully completed.
Operation is successfully completed.
Using temp directory:/tmp/oracle_cloud_config4416493815228189719
Password? (**********?) *************
Connected.

-- Database Info --
Database Product Name: Oracle
:
-- Driver Info --
Driver Name: Oracle JDBC driver
Driver Version: 18.3.0.0.0
Driver Major Version: 18
Driver Minor Version: 3
Driver URL: jdbc:oracle:thin:@(description= (address=(protocol=tcps)(port=1522)(host=xxxx.xxxx.xxxxxxxx.com))(connect_data=(service_name=xxxxxx_low.xxxx.xxxxxxxx.com))(security=(ssl_server_cert_dn="CN=xxxx.xxxx.xxxxxxxx.com,OU=…,O=…,L=…,ST=…,C=…"))   )
:

Recommended Posts

So erstellen Sie eine JDBC-URL (Oracle Database, Thin)
So erstellen Sie überall eine H2-Datenbank
So erstellen Sie eine Methode
So erstellen Sie einen JDBC-Treiber
So erstellen Sie ein Maven-Repository für 2020
[Swift5] So erstellen Sie einen Begrüßungsbildschirm
[Rails] So erstellen Sie eine Teilvorlage
[Rails] Rails neu, um eine Datenbank mit PostgreSQL zu erstellen
[Rails] So erstellen Sie ein Diagramm mit lazy_high_charts
So erstellen Sie Pagenationen für das "Kaminari" -Array
So erstellen Sie eine Klasse, die Klasseninformationen erbt
So erstellen Sie ein Thema in Liferay 7 / DXP
[1.] So erstellen Sie ein Spring-MVC-Framework-Projekt
So erstellen Sie einfach ein Pulldown mit Rails
[Rails] So erstellen Sie eine Twitter-Freigabeschaltfläche
So erstellen Sie Docker-Compose
So erstellen Sie eine Route direkt aus der URL, die Sie + α angeben möchten
3. Erstellen Sie eine Datenbank für den Zugriff über das Webmodul
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
So erstellen Sie ein Spring Boot-Projekt in IntelliJ
[Spring Boot] So erstellen Sie ein Projekt (für Anfänger)
So erstellen Sie einen Daten-URI (base64) in Java
[Apple-Abonnementangebot] So erstellen Sie eine Signatur für ein Werbeangebot
Wie hinterlasse ich einen Kommentar?
So fügen Sie ein Video ein
So erstellen Sie ein Formular zur Auswahl eines Datums aus dem Kalender
So erstellen Sie ein Platzhalterteil zur Verwendung in der IN-Klausel
So erstellen Sie ein Service Builder-Portlet in Liferay 7 / DXP
So erstellen und starten Sie eine Docker-Datei für Payara Micro
Versuchen Sie, mit Javas JDBC Thin Driver eine Verbindung zum OCB-Datenbank-PDB (DBaaS) herzustellen. (Oracle Cloud Infrastructure)
Vorbereiten der Erstellung einer Rails-Anwendung
Hinweise zur Verwendung von Spring Data JDBC
So erstellen Sie einen Java-Container
[Rails 6] So erstellen Sie mit cocoon einen dynamischen Formular-Eingabebildschirm
Wie unterschreibe ich Minecraft MOD?
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
Erstellen Sie eine Datenbank in einer Produktionsumgebung
[Swift] So senden Sie eine Benachrichtigung
So erstellen Sie einen Begrüßungsbildschirm
So erstellen Sie ein Jenkins-Plug-In
Wie erstelle ich ein Maven-Projekt?
Versuchen Sie, eine Server-Client-App zu erstellen
So übergeben Sie Oracle Java Silver
So erstellen Sie einen Webserver auf einer EC2-Instanz von AWS
So erstellen Sie ein Java-Array
So erstellen Sie eine Abfrage mithilfe von Variablen in GraphQL [Verwenden von Ruby on Rails]
So erstellen Sie eine Zip-Datei beim Gruppieren von Datenbanksuchergebnissen in Java
[Docker] So erstellen Sie eine virtuelle Umgebung für Rails- und Nuxt.js-Apps
So erstellen Sie einen Validator, der nur die Eingabe in ein Feld zulässt
Server mit Spring Gradle ausführbar So erstellen Sie JAR und WAR
[Schienen] So erstellen Sie eine Tabelle, fügen eine Spalte hinzu und ändern den Spaltentyp
So erstellen Sie eine bequeme Methode, die Generika und eine funktionale Schnittstelle verwendet
So führen Sie einen Vertrag mit web3j aus