IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

DBLink - erreur ORA12154


Sujet :

Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut DBLink - erreur ORA12154
    Bonjour, je tente de mettre en place un DB Link entre 2 bases.

    Source (base distante) = baseS
    Destination (base locale) = baseL

    Pour se faire, j'ai créé le DBLink suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    CREATE DATABASE LINK sourceID connect to login identified by pwd using 'alias1';
     
    Extrait du TNS_NAMES.ora :
     
    alias1.world= 
      (DESCRIPTION = 
        (ADDRESS_LIST = 
            (ADDRESS = 
              (COMMUNITY = tcp.world)
              (PROTOCOL = TCP)
              (Host = oratoto1)
              (Port = 1521)
            )
     
        )
        (CONNECT_DATA = (SID = sourceID)
        )
      )
    Cet alias est utilisé par ailleurs pour se connecter à la base distante, ca fonctionne sans aucun souci donc les infos du TNS_NAMES sont valides.

    Et pourtant lorsque je lance une requête sur une table via le DB_Link:

    select * from table1@sourceID;

    Toad me remonte la traditionelle erreur :
    ORA-12154 TNS : could not resolve service name
    A l'aide…………..

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    En complément, sur ma base de création du DBLink, mon Global_Name est positionné à : NomDB

    et non à NomDB.Nomdomain

    comme cela est prêché dans quelques post de ce forum. Malheureusement je n'ai pas les droits pour modifier cette variable.

    Est ce que cela peut jouer ?

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    L'erreur liée au global-name viendra peut etre plus tard mais pour l'instant ça plante avant.

    Quand on crée un DB-LINK, il faut bien avoir en tete que la base devient un client d'une autre base. C'est à dire qu'il faut que les paramètres client tels que les fichiers tnsnames.ora et sqlnet.ora soient corrects sur la machine contenant la premiere base (base locale). Il faut aussi faire attention à la valeurs des variables d'environnement ORACLE_HOME et TNS_ADMIN au moment ou la base est démarrée, car c'est d'elles dont dépend le chemin ou oralce va chercher les 2 fichiers de paramétrages cités plus haut.

    D'autre part, étant donné que l'alias du DBLINK est sans suffixe et que l'alias du tnsnames.ora est suffixé par ".world", il faut vérifier que le fichier sqlnet.ora contient bien la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NAMES.DEFAULT_DOMAIN = world
    Si tel n'est pas le cas, alors il faut créer le DBLINK en utilisant 'alias1.world'

  4. #4
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    merci Remi mais apres differents tests, le pb ne semble pas provenir du domain_name

    ce qui me surprend le plus c'est surtout que ca fonctionne sans pb lorsque je me connecte à la base distante avec le meme TNS NAME

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    Citation Envoyé par michael.mazuk
    merci Remi mais apres differents tests, le pb ne semble pas provenir du domain_name

    ce qui me surprend le plus c'est surtout que ca fonctionne sans pb lorsque je me connecte à la base distante avec le meme TNS NAME
    depuis la machine de ta base locale ? avec les memes variable d'environement que lors du lancement de ta base locale ?

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Vienne (Limousin)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Points : 95
    Points
    95
    Par défaut
    En fait le problème provient sans doute du fait que quand tu te connectes directement depuis ton client tu utilises ton tnsnames client (celui dont tu nous parles).

    Mais ce n'est pas le cas quand tu es connecté à baseS via ton client et que tu veux faire une requête sur baseL via un dblink.
    A ce moment tu utilises en fait le tnsnames qui est présent sur le serveur hebergeant baseS, c'est à dire le serveur (Unix, Windows ...) distant.

    Es-tu sûr que baseS soit bien renseigné dans le tnsnames distant ?

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut
    Bonjour je rebondis sur ce post car j'ai le même problème et la solution n'a apparemment pas été trouvé.
    j'ai une base locale.
    lorsque je me connecte à la base d'un collegue ça marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    C:\>sqlplus ubxadmin/ubxadmin@ubixjfc
     
    SQL*Plus: Release 10.2.0.4.0 - Production on Ven. Sept. 4 18:00:38 2009
     
    Copyright (c) 1982, 2007, Oracle.  All Rights Reserved.
     
    Erreur lors de l'accÞs Ó PRODUCT_USER_PROFILE
    Avertissement : Informations du profil utilisateur du produit non chargÚes !
    Vous devrez peut-Ûtre exÚcuter PUPBLD.SQL en SYSTEM
     
    ConnectÚ Ó :
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - Production
    With the Partitioning, OLAP and Data Mining options
     
    SQL> select count(1) from audlib;
     
      COUNT(1)
    ----------
           476
    je me connecte sur ma base locale et je crée un dblink:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    create public database link "JFC" connect to UBXADMIN identified by UBXADMIN using 'UBIXJFC';
    j'essaie de requeter la table audlib de la base distante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SQL> select count(1) from audlib@JFC
      2  ;
     
    *
    ERREUR Ó la ligne 2 :
    ORA-12154: TNS : l'identificateur de connexion indiquÚ n'a pas pu Ûtre rÚsolu
     
     
    SQL>
    Je comprend pas

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut
    J'ai trouvé le problème:
    En fait mon TNSNAMES.ORA référence un autre TNSNAMES.ora via un IFILE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    IFILE=S:\BACK\TNSNAMES\TNSDEV.ORA
    La base que je veux linker est définie dans cet IFILE.
    Pour me connecter via sqlplus directement à cette base il n' y a pas de soucis. par contre via le db link ça ne marche pas.
    Si je met directement la chaine de connexion dans mon fichier TNSNAMES.ORA sans passer par le IFILE ça marche.
    Ca ressemble à un Bug ça non?

  9. #9
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par farenheiit Voir le message
    ...Ca ressemble à un Bug ça non?
    Voui...
    Un IFILE dans le TNSNAMES.ORA, je ne savais même pas que c'était possible !
    Pourquoi ne pas utiliser TNS_ADMIN à la place ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 750
    Points : 341
    Points
    341
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Voui...
    Pourquoi ne pas utiliser TNS_ADMIN à la place ?
    je connais pas. ca consiste en quoi?

Discussions similaires

  1. drop dblink erreur
    Par pwd75 dans le forum Administration
    Réponses: 4
    Dernier message: 12/02/2013, 11h01
  2. DBLINK + BLOB + ERREUR
    Par chebramdou dans le forum SQL
    Réponses: 1
    Dernier message: 24/10/2011, 14h57
  3. Erreur PLS-00103 :exécution DBLink
    Par lamyruth dans le forum Oracle
    Réponses: 2
    Dernier message: 19/10/2009, 14h50
  4. Exception lorsque le dblink est en erreur
    Par Sargon dans le forum PL/SQL
    Réponses: 7
    Dernier message: 12/11/2008, 17h54
  5. Réponses: 1
    Dernier message: 05/03/2008, 17h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo