Oracle
 sql >> Base de données >  >> RDS >> Oracle

Interroger la table d'une autre base de données ORACLE

Pour Oracle,

CREATE DATABASE LINK ...

ex.

Avec un lien de base de données créé et testé, vous pouvez effectuer une requête (du style que vous avez montré) pour récupérer des lignes à partir d'une base de données distante.

Référence :http://docs.oracle.com /cd/E11882_01/server.112/e41084/statements_5005.htm#SQLRF01205

SUIVI

REMARQUE :dans Oracle, le terme "base de données" fait référence aux fichiers de données et aux fichiers journaux associés à une "instance" Oracle. Pour récupérer des données d'une deuxième "base de données", vous avez besoin d'une deuxième connexion à l'autre base de données. Oracle fournit une fonction appelée "lien de base de données". Cela permet à une session (connexion) à une instance de base de données de se connecter à une autre instance de base de données. (Sans cette fonctionnalité, un client devrait créer deux connexions distinctes et interroger les deux bases de données séparément.)

Si cette question concerne l'interrogation de deux "schémas" distincts dans le même base de données, tant que l'utilisateur dispose de privilèges suffisants sur les objets du deuxième schéma, l'identifiant peut être qualifié par le nom du schéma, par exemple

SELECT * FROM UATDEVORADB.TABLE_NAME

Pour accéder aux données d'une base de données séparée, un lien de base de données peut être utilisé...

CREATE DATABASE LINK UADEVORADB 
  CONNECT TO user 
  IDENTIFIED BY password
  USING 'uadevoradb' ;

(Cela nécessitera une entrée correspondante appropriée dans le fichier tnsnames.ora sur le serveur Oracle, ou le serveur de noms oracle, ou les détails de connexion peuvent être épelés à la place d'une entrée tnsnames.ora, quelque chose comme :

CREATE DATABASE LINK UADEVORADB
  CONNECT TO user IDENTIFIED BY password 
  USING '(DESCRIPTION=
  (ADDRESS=(PROTOCOL=TCP)(HOST=uadevorahost1)(PORT=1521))
  (CONNECT_DATA=(SERVICE_NAME=uadevoradb.domaindb)))'

Si "l'utilisateur" spécifié dans le lien de la base de données diffère du "propriétaire" de la table sur le système distant, et qu'il n'y a pas de synonyme qui référence la table, l'identifiant de la table devra être qualifié avec le propriétaire...

SELECT * FROM [email protected] ;