Oracle Net

DAns une architecture client-serveur classique (a 2 poles  donc) , pour que la communication puisse s’établir avec  un serveur de données Oracle distant , il faut une couche réseau sur le client et une couche réseau sur le serveur (le listener) .: C’est Oracle Net.

oraclenet

Dans le cas d’architecture ‘client léger’, ou architecture à 3 poles (3 tier)  il n’existe pas de programme client sur le poste (à part le navigateur) et c’est le serveur d’application qui est client du serveur de données.
Ainsi dans le cas d’un pg PHP sur le web c’est le serveur Apache qui est client du serveur Oracle

oraclenet_3tier1

Les fichiers de configuration coté client et/ou serveur se trouvent dans le répertoire ORACLE_HOME/network/admin
Ils peuvent être en dernier ressort édités à la main (fichiers “texte”) mais on utilisera préférablement les Outils ‘Enterprise Manager’ ou ‘Net Manager’

Le programme client doit notamment pouvoir identifier le serveur de données Oracle sur le réseau.
Il utilise pour ce faire une résolution de nom de serveur.

Les méthodes de résolution de nom

Avec Oracle 10g, il existe 4 modes de nommage :
* local :
on utilise un fichier de configuration situé sur le poste client (et donc sur chaque poste client!), baptisé TNSNAMES.ORA
* via un annuaire :
on utilise un serveur d’annuaire compatible LDAP : Oracle Internet Directory par exemple…
* ‘facile’ (easy ou EZ connect) :
basé uniquement sur TCP/IP (exceptionnellement pas de couche spécifique Oracle Net nécessaire coté client…c’est pour cela que c’est ‘facile’)
On utilise dès lors une chaîne de connexion explicite, qui devra préciser le serveur (machine) cible, et éventuellement le port d’écoute du logiciel serveur Oracle Net, et un nom de service de données.
exemple : CONNECT X/Y@serveur_Z:1521/ma_base
note : le port 1521 est le port par défaut du listener Oracle Net.
* externe :
on utilise un service de nom externe, non Oracle mais compatible avec ce dernier (NIS, DCE)

Utilitaires de configuration

graphiques : Oracle Enterprise Manager et Oracle Net Manager (client lourd)

Pour accéder à l’utilitaire de configuration, à partir de la console EM, cliquer sur ‘Processus d’écoute’ ou ‘listener’ sur la page d’accueil, puis cliquer sur le lien ‘Administration des servicesréseau’.

Vous pouvez alors :

  • configurer le LISTENER
  • configurer une résolution de nom locale (tnsnames.ora)
  • configurer une résolution de nom centralisé par un annuaire (OID/LDAP)
  • gérer les emplacements de fichier de config du serveur

Pour lancer l’quivallent coté client on peut utiliser les commandes ‘netca’ pour ‘Network configuration Assistant’ ou ‘netmgr’ pour Network MAnager…

exemple d’écran de la Console EM qui permet de configurer le listener sur le serveur.

em_admin_reseau

lignes de commande Oracle net Listener
Si le PATH et ORACLE_HOME sont correctement positionnés sur Unix / Linux, il suffit de taper pour…
démarrage : $> lsnrctl start
arrêt : $> lsnrctl stop
statut : $> lsnrctl status

rem : sur Windows il suffit d’utiliser l’outil de gestion des services, pour le service ‘oracle listener’ …

Fichier de configuration client : TNSNAMES.ORA

exemple d’une entrée ‘ORCL_NET’ qui pointe sur la BD ‘ORCL’ du serveur ‘Daredevil’

# tnsnames.ora Network Configuration File:
# C:oracleproduct10.1.0Db_1networkadmintnsnames.ora
# Generated by Oracle configuration tools.
# lors de la création de la base par défaut ‘ORCL’
ORCL_NET = (DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DAREDEVIL)(PORT = 1521))

(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)

Fichier de configuration serveur : LISTENER.ORA

# listener.ora Network Configuration
# File: C:oracleproduct10.1.0Db_1NETWORKADMINlistener.ora
# avec ajout d’un Service NGORCL
SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = NGORCL)
(ORACLE_HOME = C:oracleproduct10.1.0Db_1)
(SID_NAME = ORCL)
)
) LISTENER =
(DESCRIPTION_LIST =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = DAREDEVIL)(PORT = 1521))
)
)