[JAVA] Comment créer une URL JDBC (Oracle Database, Thin)

Écrivons comment créer une URL JDBC (Oracle Database, Thin) 彡 (゚) (゚)

1. Description du manuel JDBC

La description du manuel est la suivante.

8.2 URL de base de données et spécificateur de base de données https://docs.oracle.com/cd/E96517_01/jjdbc/data-sources-and-URLs.html#GUID-C4F2CA86-0F68-400C-95DA-30171C9FB8F0 L'URL de la base de données est une chaîne. La syntaxe complète de l'URL est: jdbc:oracle:driver_type:[username/password]@database_specifier  
8.2.4 Syntaxe des noms de service au format fin https://docs.oracle.com/cd/E96517_01/jjdbc/data-sources-and-URLs.html#GUID-EF07727C-50AB-4DCE-8EDC-57F0927FF61A Les noms de service au format fin ne sont pris en charge que par le pilote JDBC Thin. La syntaxe est la suivante: @//host_name:port_number/service_name

Puisque la description ci-dessus est la connexion simple (EZ CONNECT) elle-même, le manuel de la connexion simple est également lié. 彡 (゚) (゚)

8.1 Comprendre les méthodes de dénomination de connexion simples 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]

En règle générale, vous pouvez créer une URL JDBC en spécifiant le nom d'hôte / numéro de port / nom de service. Puisque c'est l'auditeur qui les gère, d'abord une brève explication du rôle de l'auditeur.

2. Rôle d'auditeur

L'écouteur est un processus qui réside sur le serveur et effectue des demandes de connexion à partir des clients. Processus d'écoute et de gestion / autorisation des connexions à la base de données Oracle.

Ceci est un exemple de connexion à un serveur dédié, mais l'article suivant est facile à comprendre comment fonctionne l'auditeur.

Qu'est-ce qu'une connexion? https://www.oracle.com/technetwork/jp/articles/chapter5-1-101584-ja.html#p01b

Un ou plusieurs ensembles de nom d'hôte (adresse IP) / numéro de port sont définis pour l'écouteur, Le service de base de données est enregistré dynamiquement avec cet écouteur.

Lorsque la commande lsnrctl status <nom de l'écouteur> est exécutée, le nom d'hôte (adresse IP) / numéro de port et Vous pouvez vérifier les services de base de données enregistrés. Ce qui suit est un exemple 彡 (゜) (゜)

$ 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)))★ Nom d'hôte et numéro de port
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=8081))(Presentation=HTTP)(Session=RAW))
:
Services Summary...
Service "64a52f53a7683286e053cda9e80aed76" has 1 instance(s).★ Services enregistrés en tant qu'auditeurs
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "784ac9d638bb5f59e0530100007f6047" has 1 instance(s).★ Services enregistrés en tant qu'auditeurs
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "AYSTEST" has 1 instance(s).★ Services enregistrés en tant qu'auditeurs
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "orcl" has 1 instance(s).★ Services enregistrés en tant qu'auditeurs
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
Service "orclcdb" has 2 instance(s).★ Services enregistrés en tant qu'auditeurs
  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).★ Services enregistrés en tant qu'auditeurs
  Instance "orclcdb", status READY, has 1 handler(s) for this service...
The command completed successfully

3. Qu'est-ce qu'un service de base de données?

Les services de base de données sont utilisés pour identifier les charges de travail Oracle Database. Il recevra un alias logique. Vous pouvez créer plusieurs services dans un même environnement Oracle Database.

L'article suivant est facile à comprendre Yade 彡 (゜) (゜)

Partie 3 Se connecter via le réseau https://www.oracle.com/technetwork/jp/database/articles/kusakabe/kusakabe-3-4490049-ja.html 4.2 Services Jusqu'à Oracle8 ... (Omis) ... C'était le SID qui est l'identifiant de l'instance Oracle ... (Omis) ... Oracle Database 10g étend le concept de services aux charges de travail abstraites ... (...) ... Le service ajouté est enregistré auprès de l'écouteur Oracle par le mécanisme d'enregistrement de service dynamique.

Décrivez ce nom de service de base de données comme destination de connexion, par exemple URL JDBC / tnsnames.ora / Easy Connection (EZCONNECT).

4. Exemple 1: vérifier la connexion en spécifiant l'URL JDBC dans sqlcl

Essayez d'écrire un exemple d'URL JDBC avec sqlcl (version en ligne de commande de SQL Developer) 彡 (゚) (゚) Essayez de vous connecter au service AYTEST dans 2. ci-dessus. L'URL JDBC pour ce cas est:

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

L'exemple d'exécution est illustré ci-dessous. L'URL JDBC se trouve après la marque @ immédiatement après le nom d'utilisateur de la commande CONNECT. Vous pouvez également vérifier l'URL JDBC avec la commande SHOW JDBC de sqlcl.

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. Exemple 2: connexion à la base de données OCI DB (DBaaS) CDB tout en spécifiant l'URL JDBC avec sqlcl

J'écrirai un exemple pour me connecter à la CDB de OCI (Oracle Cloud Infrastructure) DB (DBaaS) avec sqlcl JDBC URL 彡 (゚) (゚) Essayez d'utiliser l'exemple de l'article ci-dessous.

Essayez de vous connecter à la base de données OCI (DBaaS) PDB avec sqlplus. (Oracle Cloud Infrastructure) https://gonsuke777.hatenablog.com/entry/2019/02/19/211953 : Chaîne de connexion au service de gestion (CDB) (connexion simple): dbname.subnetname.vcnname.oraclevcn.com:1521/dbname_cdb32r.subnetname.vcnname.oraclevcn.com :

L'URL JDBC dans le cas ci-dessus est la suivante.

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

L'échantillon de connexion par sqlcl est le suivant 彡 (゜) (゜)

./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. Exemple 3: URL JDBC pour la base de données autonome (ATP / ADW)

Reportez-vous à l'article suivant pour l'URL JDBC pour la base de données autonome (ADW / ATP) 彡 (゚) (゚)

Essayez de vous connecter à Autonomous DB (ADW / ATP) avec JDBC Thin Driver de Java. (OCI, infrastructure Oracle Cloud) https://gonsuke777.hatenablog.com/entry/2019/02/26/023534

Spécifiez l'emplacement de stockage du portefeuille dans TNS_ADMIN d'une manière ou d'une autre. Si vous écrivez TNS_ADMIN directement dans l'URL JDBC, 彡 (゚) (゚)

  1. Méthode 1: écrivez le chemin du portefeuille (TNS_ADMIN) dans l'URL JDBC 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

    ★ Ce qui suit est l'URL JDBC jdbc:oracle:thin:@xxxxxx_high?TNS_ADMIN=/home/opc/app/opc/product/18.0.0/client_1/network/admin

Voir l'article pour les résultats.

7. Exemple 4: écrivez l'URL JDBC dans un format semblable à tnsnames.ora

Comme décrit dans Manual Vous pouvez également écrire l'URL JDBC comme tnsnames.ora. Voici l'exemple 彡 (゜) (゜)

* En fait décrit en une seule ligne
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))
  )
)

L'exemple de connexion avec sqlcl est le suivant: 彡 (゚) (゚) command long.

./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. Résumé

Je me demande s'il a mauvaise réputation car je peux écrire quelque chose comme 7. ci-dessus (゜) (゜)

Cette zone fait partie de Oracle MAA (Architecture de disponibilité maximale). Basculement au moment de la connexion, équilibre de la charge côté client, etc. Je suis conscient que c'est le cas, il faut donc faire un effort pour le comprendre (゜ ε ゜)

Si vous comprenez la connexion simple (EZ CONNECT), vous devriez avoir peur! Connecter (?) De plus en plus 彡 (^) (^)

Bonus. Exemple: Connectez-vous à Autonomous DB (ATP / ADW) avec sqlcl

Pour sqlcl, spécifiez le portefeuille avec la commande set cloudconfig. Ce qui suit sera utile.

Oracle Cloud: j'ai essayé la connexion SQLcl à Autonomous Database https://qiita.com/shirok/items/86355be72a47a840d10e

L'URL JDBC après avoir défini cloudconfig est la suivante, quelque chose de compliqué (゜) (゜)

./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

Comment créer une URL JDBC (Oracle Database, Thin)
Comment créer une base de données H2 n'importe où
Comment créer une méthode
Comment créer un pilote JDBC
Comment créer un référentiel Maven pour 2020
[Swift5] Comment créer un écran de démarrage
[rails] Comment créer un modèle partiel
[Rails] rails nouveau pour créer une base de données avec PostgreSQL
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment créer des pages pour le tableau "kaminari"
Comment créer une classe qui hérite des informations de classe
Comment créer un thème dans Liferay 7 / DXP
[1st] Comment créer un projet de framework Spring-MVC
Comment créer facilement un pull-down avec des rails
[Rails] Comment créer un bouton de partage Twitter
Comment créer docker-compose
Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α
3. Créez une base de données à laquelle accéder à partir du module Web
Comment créer un environnement Java en seulement 3 secondes
Comment créer un projet Spring Boot dans IntelliJ
[Spring Boot] Comment créer un projet (pour les débutants)
Comment créer un URI de données (base64) en Java
[Offre d'abonnement Apple] Comment créer une signature d'offre promotionnelle
Comment laisser un commentaire
Comment insérer une vidéo
Comment créer un formulaire pour sélectionner une date dans le calendrier
Comment créer une partie d'espace réservé à utiliser dans la clause IN
Comment créer un portlet de générateur de services dans Liferay 7 / DXP
Comment créer et lancer un Dockerfile pour Payara Micro
Essayez de vous connecter à la base de données OCI (DBaaS) PDB avec le pilote léger JDBC de Java. (Oracle Cloud Infrastructure)
Préparation à la création de l'application Rails
Remarques sur l'utilisation de Spring Data JDBC
Comment créer un conteneur Java
[Rails 6] Comment créer un écran de saisie de formulaire dynamique à l'aide de cocoon
Comment signer Minecraft MOD
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Créer une base de données dans un environnement de production
[Swift] Comment envoyer une notification
Comment créer un écran de démarrage
Comment créer un plug-in Jenkins
Comment faire un projet Maven
Essayez de créer une application client serveur
Comment passer Oracle Java Silver
Comment créer un serveur Web sur une instance EC2 d'AWS
Comment créer un tableau Java
Comment créer une requête à l'aide de variables dans GraphQL [Utilisation de Ruby on Rails]
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
[Docker] Comment créer un environnement virtuel pour les applications Rails et Nuxt.js
Comment créer un validateur qui n'autorise la saisie que dans un seul champ
Exécutable serveur avec Spring gradle Comment créer JAR et WAR
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
Comment créer une méthode pratique qui utilise des génériques et une interface fonctionnelle
Comment exécuter un contrat avec web3j