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

PL/SQL Oracle Discussion :

Database link et procédure


Sujet :

PL/SQL Oracle

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Database link et procédure
    Bonjour,

    je rencontre un problème lors de l'utilisation d'un DB link à l'intérieur d'une procédure stockée.

    J'ai créé mon lien via la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    create public database link TR
    connect to REF
    identified by ref
    using 'REF';
    Mon lien fonctionne bien, l'exécution de requêtes sur la base distance se déroulant correctement.

    Lorsque je fais fais référence à ce lien à l'intérieur d'une procédure stockée, je tombe, à la compilation de la proc, sur l'erreur suivante pour chaque référence à mon DB link :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ORA-02083: nom de base de données contient caractère interdit '-'
    Voici une partie du code de ma procédure :
    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
     
    	 -- Récupération de la version en cours dans le référentiel temps réel.
    	 select max(ver_id) into V_ENCOURS from VERSIONS@TR where VER_ACTIF = 'O';
     
    	 ---------------------
    	 -- INFRASTRUCTURES --
    	 ---------------------
    	insert into INFRASTRUCTURES 
    	select 
    		INF_ID,
            INF_VERSION + 1,
    		INF_NOM,
    		INF_DESCR,
    		INF_FAMILLE,
    		INF_SOUS_FAMILLE
        from INFRASTRUCTURES@TR
        where INF_VERSION = V_ENCOURS;
    Chaque référence à TR me renvoi l'erreur évoquée ci dessus.

    Lorsque je regarde sous TOAD ou OEM la description de mon DB link, celui ci s'appelle TR.NOM-DOMAINE.

    Le problème vient il du fait que le nom de domaine contient un '-' ?
    Dans ce cas pourquoi tout fonctionne bien lorsque j'execute directement les requêtes sous SQL Plus ?

    Je ne vois vraiment pas comment résoudre ce problème ...

    Merci de votre aide !

  2. #2
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    bonjour ,

    j' ai eu le même pb que toi , si tu n' as pas besoin du domaine, supprimes
    le , sinon renommes ton domaine .
    Tu es dans une limite d' oracle qui veut que le nom de domaine
    ne contienne pas de caractéres invalides ( "_" , ".", etc ) cf la doc
    le pire c' est qu' oracle ne dit rien lors de la création mais te jette
    lors de son utilisation ( même souci dans des environnements répliqués ).

    cdlt

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci.

    Dans ce cas, comment dire à Oracle de ne pas utiliser le nom de domaine ?

    Je ne peux pas modifier le domaine, c'est le domaine du réseau de l'entreprise, et le serveur doit bien évidement faire partie de celui-ci ...

  4. #4
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    pour oracle , à priori , il n' y a pas de corrélation entre
    le nom de domaine oracle et celui du réseau Windows d' entrprise.
    Donc tu changes le nom de domaine ( paramètre db_domain )
    sinon , encore mieux , tu ne précises pas de domaine dans
    l' allias ( en en créant un autre par ex ) et auquel tu fais référence ds ton
    db_link .

    chez nous le nom de domaine oracle est différent de celui du réseau d' entreprise et les dblinks fonctionnent sans pb .

    cdlt

  5. #5
    Membre confirmé
    Inscrit en
    Décembre 2003
    Messages
    493
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 493
    Points : 605
    Points
    605
    Par défaut
    effectivement il y a une solution moins "forte" que celle proposée par Ducho

    tout d'abord, un database link prendra le même nom que la base de données cible si le paramètre d'initialisation GLOBAL_NAMES = TRUE

    passez à FALSE arrange donc l'affaire

    néanmoins il est recommandé de rester à GLOBAL_NAMES = TRUE pour certaines fonctionnalités offertes par Oracle (Replication)

    comment faire ? tout simplement en changeant le global name de ta db et plus particulièrement le nom de domaine de ta db (indépendamment de ton domaine réseau) via :
    1) le paramètre d'initialisation DB_DOMAIN (nécessite le redémarage de ta db)
    2) l'ordre ALTER DATABASE
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER DATABASE RENAME GLOBAL_NAME TO database.newdomain;
    voila cela devrait résoudre ton problème de manière moins brutale

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci Ducho et Marc

    Je teste ça et je vous tiens au courant !

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Cela fonctionne.

    Merci à vous 2

  8. #8
    Membre éclairé

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2003
    Messages
    701
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 701
    Points : 741
    Points
    741
    Billets dans le blog
    1
    Par défaut
    Quelle solution as-tu utilisée , ça m' interesse !

    cdlt

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2002
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    La solution de Marc :

    - Changement du paramètre DB_DOMAIN. (Il était non renseigné jusqu'alors)
    Apparement ce paramètre n'a aucune incidence s'il est modifié après la création de la DB. Mais bon dans le doute ...

    - Execution de l'ordre ALTER DATABASE RENAME GLOBAL_NAME TO nomBase.nomDomaine.

    Il m'a fallut détruire et recréer les DB link pour qu'il prenne en compte le changement de domaine.

    Voila !

  10. #10
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 73
    Points
    73
    Par défaut
    Bonjour,
    J'ai le même problème. J'ai créé un database link BASEREC sous PL/SQL et lorsque j'ai cliquer sur Appliquer, il a été créé en rajoutant derrière .<nom du serveur>
    Or le nom du serveur contient un - qui ne peut pas ensuite être utilisé.
    J'essaye donc de le supprimer mais il ne veut pas en me disant 'ORA-00933: la commande ne se termine correctement' en me positionnant le curseur sur le tiret !
    Quelqu'un a t-il une solution?
    Merci d'avance

  11. #11
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    117
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 117
    Points : 73
    Points
    73
    Par défaut
    ok! j'ai trouvé, il suffit de mettre le nom du databaselink entre guillemet
    exemple : select * from table@"MONLINK.SERVEUR-01"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Database link et procédure
    Par Sir Coco dans le forum Administration
    Réponses: 10
    Dernier message: 02/04/2008, 16h13
  2. Utilisation de database link avec Oracle 9i+
    Par moezsokrati dans le forum Oracle
    Réponses: 1
    Dernier message: 21/01/2006, 17h45
  3. partage de lien DATABASE LINK
    Par de LANFRANCHI dans le forum Administration
    Réponses: 5
    Dernier message: 21/09/2004, 08h40
  4. Erreur ORA-12514 avec database link
    Par gafreu dans le forum Administration
    Réponses: 20
    Dernier message: 09/09/2004, 11h53
  5. DATABASE LINK + type Long et long raw ...
    Par bchristo dans le forum Administration
    Réponses: 21
    Dernier message: 26/04/2004, 15h27

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