Bon, évidemment, mon analogie rapide n'était pas suffisante et risquait de provoquer des confusions !
Le plus parlant, ça sera d'examiner les schémas de la doc Oracle (dans tout le chapitre 4 ici) :
http://docs.oracle.com/cd/E11882_01/...s.htm#i1047762
- On peut considérer que Oracle Net est un protocole propriétaire de couche session.
- OCI est une API applicative, qui fait appel par dessous à Oracle Net.
- ODBC est une couche de communication multi SGBD. Pour accéder à une base Oracle, le pilote ODBC pour Oracle passe par OCI. Il en est de même pour un pilote JDBC OCI.
- Nombre d'applications, SQL*Plus par exemple, n'ont aucun besoin d'un ODBC ou équivalent, et communiquent directement avec OCI.
Pour résumer :
Appli --> (ODBC/JDBC) --> OCI--> Oracle Net
Le DBlink, lui, est un objet qu'on déclare dans la base (au même titre qu'une table), et qui permettra à deux bases Oracle de communiquer.
Autrement dit, le premier serveur Oracle pourra se comporter comme client vis à vis de l'autre.
Un accès par DBlink passe donc aussi par OCI.
Et s'il s'agit de communiquer avec SQL Server, ça peut se faire soit à l'initiative de SQL Server (serveur lié hétérogène), soit à l'initiative d'Oracle (connectivité hétérogène) et dans ce cas il s'agit effectivement d'une forme de DBlink.
En espérant que ça éclaircisse un peu les choses !
Partager