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

SQL Oracle Discussion :

Explain plan --> ORA-01775 Boucle de synonyme


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut Explain plan --> ORA-01775 Boucle de synonyme
    Bonjour,

    pour vérifier une requête qui semble lente sur mon schéma, j'utilise la fonction "Explain plan" dans TOAD.
    Mon problème est que j'obtiens l'erreur "ORA-01775 Boucle de synonymes". Idem si je le fais sous sqlplus.
    Bizarrement, si je le fais sur un autre schéma, je n'ai pas cette erreur.
    J'ai aussi testé avec une requête ultra simple, pareil.

    Sur un autre forum, une personne m'a conseillé de vérifier les résolutions de noms de mes objets ... J'ai aucune idée de ce que cela veut dire ...

    Ou vérifier ces synonymes ?
    Je me suis connecté en SYSDBA sous TOAD mais dans l'onglet synonyme, j'ai environ 500 synonyme ...
    Auriez vous un indice pour moi ?

    Merci d'avance.

    PS : Pour les modos, je ne sais pas vraiment si cette question peut se placer dans SQL, donc désolé si je me suis trompé.

  2. #2
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    ORA-01775 looping chain of synonyms

    Cause: Through a series of CREATE synonym statements, a synonym was defined that referred to itself. For example, the following definitions are circular:

    CREATE SYNONYM s1 for s2
    CREATE SYNONYM s2 for s3
    CREATE SYNONYM s3 for s1


    Action: Change one synonym definition so that it applies to a base table or view and retry the operation.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SQL> desc all_synonyms
    Name         Type          Nullable Default Comments                                                 
    ------------ ------------- -------- ------- -------------------------------------------------------- 
    OWNER        VARCHAR2(30)                   Owner of the synonym                                     
    SYNONYM_NAME VARCHAR2(30)                   Name of the synonym                                      
    TABLE_OWNER  VARCHAR2(30)  Y                Owner of the object referenced by the synonym            
    TABLE_NAME   VARCHAR2(30)                   Name of the object referenced by the synonym             
    DB_LINK      VARCHAR2(128) Y                Name of the database link referenced in a remote synonym 
     
    SQL>

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 7
    Par défaut
    Merci pour la rapidité de la réponse.
    J'ai donc lancé la commande DESC all_synonyms sur les 2 schémas et surprise, j'obtiens exactement pareil que la réponse que tu as mis en exemple.
    Donc pour trouver une différence la dedans ...

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
     
    Connected to Oracle9i Enterprise Edition Release 9.2.0.5.0 
    Connected as mni
     
     
    SQL> 
    SQL> drop synonym s1
      2  /
     
    Synonym dropped
     
    SQL> drop synonym s2
      2  /
     
    Synonym dropped
     
    SQL> drop synonym s3
      2  /
     
    Synonym dropped
     
    SQL> create synonym s1 for s2
      2  /
     
    Synonym created
     
    SQL> create synonym s2 for s3
      2  /
     
    Synonym created
     
    SQL> create synonym s3 for s1
      2  /
     
    Synonym created
     
    SQL> select * from s1
      2  /
     
    select * from s1
     
    ORA-01775: bouclage de chaînes de synonymes
     
    SQL>  Select *
      2    from user_synonyms
      3    start with synonym_name = 'S1'
      4  Connect By prior table_name = synonym_name
      5  /
     
    Select *
      from user_synonyms
      start with synonym_name = 'S1'
    Connect By prior table_name = synonym_name
     
    ORA-01436: boucle CONNECT BY dans les données utilisateur
     
    SQL>
    Et peut être que tu devrait t'intéresser au plan_table.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Décembre 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 8
    Par défaut
    Cette erreur est due au paramétrage de TOAD:

    Solution 1 :
    - Vérifier que la table TOAD_PLAN_TABLE existe bien !
    - Si elle n'existe pas , il faut que le synonyme
    PUBLIC.TOAD_PLAN_TABLE pointe sur SYS.PLAN_TABLE

    Solution 2 :
    - sous TOAD, aller à "View-> TOAD options"
    - dans le groupe "Oracle", cliquer sur "General"
    - Dans la partie "Explain Plan", modifier 'TOAD_PLAN_TABLE' en 'PLAN_TABLE'.

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Tsss. mais qui reprend des posts de 2008 !!!!

  7. #7
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 65
    Par défaut Méme probléme.
    Bonjour,

    J'ai le même type d'erreur lors d'un import DATA PUMP, a savoir la ORA-01775 sauf que je ne suis evidemment pas sous toad.

    J'aimerai retrouver les synonymes foireux, pouvez vous m'aider j'en ai plus de 2000 synonymes.

    Merci d'avance.

  8. #8
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Je pense qu'en lançant la requête donnée au dessus pour chacun de tes 2000 synonymes tu devrais trouver lequel plante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SQL>  SELECT *
      2    FROM user_synonyms
      3    start WITH synonym_name = 'S1'
      4  Connect BY prior table_name = synonym_name
      5  /
    Evidemment je pense qu'il te faut faire une boucle PL/SQL pour éviter de faire les 2000 à la main... Et éviter de lancer ça en prod pour éviter que les 2000 requêtes ne crashent la base.

Discussions similaires

  1. Explain Plan
    Par claralavraie dans le forum Oracle
    Réponses: 28
    Dernier message: 22/05/2006, 17h52
  2. Oracle9i explain plan for
    Par mohmanjdo dans le forum Oracle
    Réponses: 1
    Dernier message: 12/05/2006, 06h12
  3. [9.2] Explain Plan
    Par nako dans le forum Oracle
    Réponses: 9
    Dernier message: 09/01/2006, 10h52
  4. TKPROF et Explain Plan
    Par kamalito dans le forum Oracle
    Réponses: 7
    Dernier message: 27/10/2005, 11h54
  5. Réponses: 13
    Dernier message: 23/06/2005, 10h56

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