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 :

CREATE TABLE PARALLEL


Sujet :

SQL Oracle

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut CREATE TABLE PARALLEL
    Salut,
    j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORA-12801: error signaled in parallel query server P000
    ORA-01652: unable to extend temp segment by 128 in tablespace TEMPORAL
    je veux modifier ma requete pour enlever le parallelisme. la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE NomTableTempo
    TABLESPACE TBS
    PARALLEL
    NOLOGGING
    AS SELECT *
    FROM strNomTable T
    WHERE conditions;
    le probleme, je ne sais pas si je dois mettre un 'AS SELECT /*+ NOPRALLEL(T) */ *... ' ou seulement enlever le 'PARALLEL' avant le NOLOGGING.

    Merci d'avance

  2. #2
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Citation Envoyé par jdar Voir le message
    Salut,
    j'ai une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ORA-12801: error signaled in parallel query server P000
    ORA-01652: unable to extend temp segment by 128 in tablespace TEMPORAL
    je veux modifier ma requete pour enlever le parallelisme. la voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE NomTableTempo
    TABLESPACE TBS
    PARALLEL
    NOLOGGING
    AS SELECT *
    FROM strNomTable T
    WHERE conditions;
    le probleme, je ne sais pas si je dois mettre un 'AS SELECT /*+ NOPRALLEL(T) */ *... ' ou seulement enlever le 'PARALLEL' avant le NOLOGGING.

    Merci d'avance
    Bonjour,

    Quelle version Oracle tu as ?

    Pour enlever le parallele c'est NOPARALLEL ou simpelement enlever PARALLEL

    Sinon le select /*+ parallel */ n'intervient pas ici pour la creation mais dans le select i.e tu peux bien faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE TABLE tabB PARALLEL 8 AS SELECT /*+ PARALLEL(t1,4)*/  * FROM tabA t1 ;
    Tu peux aggrandir le tablespace Temporaire

    Sinon qu'est c eque tu as dans le clause where CONDITIONS (des tris ???)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    Version Oracle : 10.2.0

    pour les conditions, c'est des filtres (l'expression est longue)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE T.x > (select valeur from tab2)
    mais le paramètre SORT_AREA_SIZE est deja initialisé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER SESSION SET SORT_AREA_SIZE=1000000000;
    le Table space temporaire ne peut plus être augmenté
    apparemment la requête ramène énormément de lignes , donc ça déborde

  4. #4
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    1.Si t'est en 10G R2

    alors tu es peut etre en Automatic PGA Memory Management

    as tu verifié ca ?

    dans ce cas le sort_area_size n'est pas pris en compte.

    Sinon , dans ton cas tu peux te mettre en manuel pour la session

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter session set workarea_size_policy =manual ;
    avant de mettre une valeur a SORT_AREA_SIZE.

    2. pour le tablespace temporaire un peux toujours ajouter un datafile non ?

    3. il faut surement optimiser la requete select ....where

    Donc faire autotrace , explain plan ou peut etre creer une table partitionnée ...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bi
    le problème c'est que je ne peux gerer que le script pl/sql dc tt ce que je peux faire, c'est changer le parallelisme et ajouter des ALTER SESSION.
    voici le PGA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    aggregate PGA target parameter	65850368
    comme c'est pas 0 , je suis donc en automatique, je rajouterai le manual avant le sort.

    tu me confirmes?

    merci

  6. #6
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    C'est une solution de mettre en manual ... parmi d'autres

    mais aussi de contacter le DBA si c'est pas toi pour le Tablespace TEMP

    Surtout améliorer la requete sql qui cherche dans la table source , as tu regardé le plan d'execution ?


    Le mieux c'est que tu fais tout ca dans un environnement de test , mais je comprend que tu n'as pas forcément tout ca a dispo ...

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    non, j'ai un environnement de test, mais le problème
    c'est que je peux pas tester sur l'environnement de prod ou il y a la volumétrie
    qui peut causer de tels erreurs.
    pour la requête je suis pas sur qu'on peut mieux faire, c'est un select * sur toute la table avec un petit filtre.
    le partitionnement doit être une décision concernant toute la base, je peux le proposer mais pas le faire à présent.


    Merci fatsora

  8. #8
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    le partitionnement ne concerne qu'un objet : une table ,ou plusieurs

    http://download.oracle.com/docs/cd/B...4/c12parti.htm

    Bon, sinon , tu peux toujours regarder la requete select * from where

    Si ton environnement de test est trop petit, tu ne peux qu'extrapoler ...
    Dans le cas contraire ,tu peux aussi importer les données de la prod pour tester.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    Je reviens sur le PGA.
    comment on peut le désactiver pour un test et le remettre après?

  10. #10
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Pour ta session , la commande est au dessus : alter session

    Pour toute la base alter system

    http://download.oracle.com/docs/cd/B...htm#REFRN10231

    et n'oublie pas ,la ou tu va gagner c'est sur le sql !!

    et je ne comprend toujours pas pourquoi tu ne peux augmenter la tablespace TEMP ....

    car ca risque helas de revenir .....

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 62
    Par défaut
    merci,
    le filesystem est plein , on ne peut plus rajouter, ça vient d'être augmenté mais ça n'a pas suffit. il faut demander à d'autres personnes via d'autres de le faire... communication difficile.
    en plus le script demande de l'espace juste la première fois, après il ne sera plus utile, donc ils voudraient pas rajouter de l'espace pour un one shot.
    je suis bien d'accord que tout se joue dans le sql, mais je dépanne et je ne vais pas changer toute une architecture... je dois faire avec l'existant

  12. #12
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    OK , c'est pas gagné !

    TEMPORAL c'est le tablespace temporaire ? (je suppose mais ...)


    1. tu fais un explain plan ou autotrace du select
    ... tu verras s'il fait un tri ou pas

    2. tu peux essayer de faire un CTAS create table T1 as select * from SOURCE where 1=2;

    cad vide !

    3. insert /*+ append */ into select ....

    Mais encore une fois c'est pas gagné.

Discussions similaires

  1. CREATE TABLE .... AS SELECT
    Par blids dans le forum SQL
    Réponses: 5
    Dernier message: 13/10/2016, 14h00
  2. create table
    Par boucher_emilie dans le forum ASP
    Réponses: 3
    Dernier message: 08/07/2004, 17h08
  3. [DB2] create table... if not exists ?
    Par iubito dans le forum DB2
    Réponses: 6
    Dernier message: 23/03/2004, 18h26
  4. Create table + jointure
    Par ender999 dans le forum Débuter
    Réponses: 7
    Dernier message: 20/02/2004, 12h04
  5. Database new user & create table
    Par MFDev dans le forum InterBase
    Réponses: 3
    Dernier message: 30/09/2003, 20h47

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