Oracle net

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Couche réseau Oracle (SQL*Net)
Fichier client tnsnames.ora
Méthodes de résolution Local naming, Easy Connect, LDAP, externe
Voir aussi Lsnrctl · Instance · Instantclient

Oracle Net (anciennement SQL*Net) est la couche logicielle qui permet la communication entre un client et un serveur Oracle à travers le réseau. Côté serveur, elle repose sur le listener ; côté client, sur une résolution de nom de service qui indique comment joindre la base souhaitée.

Résolution du nom de service côté client

La configuration se fait via %ORACLE_HOME%\network\admin\tnsnames.ora (ou $ORACLE_HOME/network/admin/tnsnames.ora sous Unix/Linux), selon plusieurs méthodes possibles :

  • Local naming : résolution via le fichier local tnsnames.ora (la plus
 courante).
  • Easy Connect naming : connexion directe sans passer par un alias, en indiquant
 hôte/port/service dans la chaîne de connexion :
sqlplus utilisateur/mot_de_passe@//hote[:port]/nom_service
  • Annuaire LDAP : résolution centralisée via un annuaire (Oracle Internet Directory ou
 autre LDAP compatible), utile pour mutualiser la configuration sur de nombreux clients.
  • Naming externe : délégation à un service de nommage tiers (NIS...), peu utilisé
 aujourd'hui.

Le service auquel le client se connecte est identifié par un nom de service (SERVICE_NAMES), généralement construit comme :

SERVICE_NAMES = DB_NAME.DB_DOMAIN

Exemple de fichier tnsnames.ora

Extrait minimal décrivant un alias LISTENER avec deux protocoles d'accès (IPC local pour les liens externes PL/SQL, TCP pour le réseau) :

LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
    )
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = srvwinora)(PORT = 1521))
    )
  )

Une entrée de connexion complète vers une base ajoute en général un bloc CONNECT_DATA précisant le SERVICE_NAME :

MABASE =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = srvwinora)(PORT = 1521))
    (CONNECT_DATA =
      (SERVICE_NAME = mabase.exemple.local)
    )
  )

Voir aussi

  • Lsnrctl — gestion du listener côté serveur
  • Instance — l'instance à laquelle Oracle Net donne accès
  • Instantclient — client léger utilisant également tnsnames.ora / Easy Connect