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 :

Impossible de faire une jointure suplémentaire


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut Impossible de faire une jointure suplémentaire
    Bonjour,

    J'ai vraiment un problème avec ma DB, ce matin encore la requête fonctionnait, elle se termine par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ORA-01652: impossible d'étendre le segment temporaire de 128 dans le tablespace TEMP
    01652. 00000 -  "unable to extend temp segment by %s in tablespace %s"
    *Cause:    Failed to allocate an extent of the required number of blocks for
               a temporary segment in the tablespace indicated.
    *Action:   Use ALTER TABLESPACE ADD DATAFILE statement to add one or more
               files to the tablespace indicated.
    Ce n'est pourtant pas un problème de Temp tablespace car il y a de la place sur le disque et le tablespace est autoextend.

    Ma requête est comme ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT col1, col2, col3
    FROM tab1, tab2, tab3
    WHERE ...
    Par contre dès que j'ajoute une autre jointure elle ne fonctionne plus:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT col1, col2, col3
    FROM tab1, tab2, tab3, (SELECT 'toto' param1 FROM DUAL) t4
    WHERE ...
    Je ne vois pas ce que je peux faire.

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 136
    Par défaut
    Avec la syntaxe de jointure que tu as utilisée, on a vite fait de créer des produits cartésiens sans s'en apercevoir.
    Tu es vraiment certain de n'avoir rien fait d'autre que d'ajouter cette table dérivée dans la requête ?
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Avec la syntaxe de jointure que tu as utilisée, on a vite fait de créer des produits cartésiens sans s'en apercevoir.
    Tu es vraiment certain de n'avoir rien fait d'autre que d'ajouter cette table dérivée dans la requête ?
    Oui.Je n'ai ajouté que ce select.
    Il faut dire aussi que les tables tab1, tab2, tab3 sont des tables provenant d'un DBLink

  4. #4
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    Citation Envoyé par cmako Voir le message
    Oui.Je n'ai ajouté que ce select.
    Il faut dire aussi que les tables tab1, tab2, tab3 sont des tables provenant d'un DBLink
    Il n'est pas impossible que le "SELECT FROM DUAL" force les jointures à se faire sur votre instance, ce qui a pour effet de ramener trop de données via le datalink (et faire des jointures sur votre instance plutôt que sur la distante, saturant le TEMP). Essayez le hint DRIVING_SITE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT /*+DRIVING_SITE(tab1)*/ col1, col2, col3
    FROM tab1, tab2, tab3, (SELECT 'toto' param1 FROM DUAL) t4
    WHERE ...
    EDIT : il se peut aussi que le TEMP fautif soit celui de la base distante ?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    616
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations forums :
    Inscription : Mars 2007
    Messages : 616
    Par défaut
    Citation Envoyé par Rei Ichido Voir le message
    Il n'est pas impossible que le "SELECT FROM DUAL" force les jointures à se faire sur votre instance, ce qui a pour effet de ramener trop de données via le datalink (et faire des jointures sur votre instance plutôt que sur la distante, saturant le TEMP). Essayez le hint DRIVING_SITE :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT /*+DRIVING_SITE(tab1)*/ col1, col2, col3
    FROM tab1, tab2, tab3, (SELECT 'toto' param1 FROM DUAL) t4
    WHERE ...
    EDIT : il se peut aussi que le TEMP fautif soit celui de la base distante ?
    Merci,

    c'était bien le problème de datalink le hint DRIVING_SITE a bien résolu le problème.
    Et également, le problème de temptablespace était bien sur le serveur distant. (espace disque libre = 0)

  6. #6
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Citation Envoyé par cmako Voir le message
    Ce n'est pourtant pas un problème de Temp tablespace car il y a de la place sur le disque et le tablespace est autoextend.
    Pourtant c'est bien un problème de place dans le temp. Est-ce que le tablespace Temp a atteint sa valeur maximale ? Il fait quelle taille ?
    Cordialement,
    Franck.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/11/2006, 12h08
  2. faire une jointure sur des clés différentes
    Par phpaide dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/09/2006, 10h16
  3. Impossible de faire une rupture programmée...
    Par Tchupacabra dans le forum WinDev
    Réponses: 1
    Dernier message: 03/03/2006, 13h49
  4. Comment faire une jointure ?
    Par Terminator dans le forum Langage SQL
    Réponses: 12
    Dernier message: 16/10/2005, 13h26
  5. [CR9] faire une Jointure externe
    Par coldec dans le forum SAP Crystal Reports
    Réponses: 5
    Dernier message: 28/06/2005, 12h10

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