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 :

Les GTT en 10g


Sujet :

Oracle

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

    Informations forums :
    Inscription : Novembre 2012
    Messages : 149
    Points : 52
    Points
    52
    Par défaut Les GTT en 10g
    Bonjour ,

    1/ J'ai une GTT (Global Temporary Table) qui utilise le tablespace TOOLS.
    mais ce tablespace n'est ni le tablespace par défaut du user ni précisé dans l'ordre de création de la GTT !

    D'où vient ce lien entre la GTT et ce tablespace ?

    2/ Oracle préconise d'utiliser les GTT quand c'est possible .

    En dehors du fait que les GTT ne génère pas d'écritures UNDO et REDO quels sont les autres avantages ?

    3/ Pourquoi s'embêter à créer des GTT alors qu'on peut créer des tables classiques en mode NOLOGGING qu'on peut TRUNCATER au besoin ?

    et en plus on peut vérifier le contenu (nombre de lignes par exemple) depuis n'importe qu'elle autre session(chose impossible avec les GTT).

    A+

  2. #2
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    La GTT est créée dans le default temporary tablespace.

    L'étanchéité inter session de la GTT peut être considéré comme un avantage, il permet de pas se mélanger les pinceaux (et donc être utilisée de manière concurrente par plusieurs jobs / users).

    Donc gestion du vidage automatique, étanchéité et no redo / undo sont des avantagtes.

    Sinon côté NOLOGGING, ça ne marche pas quand ta base est en force logging, ce qui arrive avec notamment avec Data Guard.

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  3. #3
    Expert éminent sénior 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
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par tropiko Voir le message
    ...

    En dehors du fait que les GTT ne génère pas d'écritures UNDO et REDO quels sont les autres avantages ?
    ...
    Faux!
    Les tables temporaires génèrent toujours de l'undo et moins de redo ! En fait elles ne génèrent pas directement du redo mais comme elles génèrent de l’undo et l’undo doit être protégé par le redo il y en auras toujours un peu.
    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
    SQL> create global temporary table gtt
    (
      OWNER          VARCHAR2(30) not null,
      OBJECT_NAME    VARCHAR2(30) not null,
      SUBOBJECT_NAME VARCHAR2(30),
      OBJECT_ID      NUMBER not null,
      DATA_OBJECT_ID NUMBER,
      OBJECT_TYPE    VARCHAR2(19),
      CREATED        DATE not null,
      LAST_DDL_TIME     DATE not null,
      TIMESTAMP      VARCHAR2(19),
      STATUS         VARCHAR2(7),
      TEMPORARY      VARCHAR2(1),
      GENERATED      VARCHAR2(1),
      SECONDARY      VARCHAR2(1)
    )
    on commit delete rows
    /
    Table créée.
    
    SQL> set autotrace traceonly statistics
    SQL> insert into gtt select * from all_objects;
    
    25870 ligne(s) créée(s).
    
    
    Statistiques
    ----------------------------------------------------------
            276  recursive calls
           1816  db block gets
         135410  consistent gets
              1  physical reads
         136084  redo size
            833  bytes sent via SQL*Net to client
            734  bytes received via SQL*Net from client
              3  SQL*Net roundtrips to/from client
            634  sorts (memory)
              0  sorts (disk)
          25870  rows processed

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Les GTT permettent:
    - d'isoler les données de chaque session, alors que les tables 'normales' servent au contraire à les partager.
    - de gérer des données non persitantes: les données disparaissent si la session se termine

    C'est donc plus performant: moins de contention, moins de redo nécessaire.

    Par contre, le UNDO est généré normalement car on doit pouvoir faire un rollback.
    Et du REDO est quand nême généré (pour cet undo... même si c'est inutile)

    Les tables classiques en NOLOGGING évitent de générer du REDO uniquement en direct-path (insert append). Elles génèrent quand même du redo en inserts conventionnels.

    Et les GTT évitent surtout de créer des tables à la volée (DDL) ce qui est toujours couteux.

    Gordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

Discussions similaires

  1. Les Groupes ORACLE 10g
    Par Je_Debute dans le forum Débuter
    Réponses: 4
    Dernier message: 07/05/2010, 15h48
  2. Question sur les jobs oracle 10G R2
    Par Z3phur dans le forum Administration
    Réponses: 2
    Dernier message: 13/03/2008, 15h12
  3. les nouveautés de 10g
    Par fouad77fr dans le forum Administration
    Réponses: 2
    Dernier message: 23/07/2007, 17h20
  4. Les droits ? grant (10g) [unix]
    Par frp31 dans le forum Administration
    Réponses: 3
    Dernier message: 26/04/2007, 16h53
  5. question sur les grant (oracle 10g)
    Par awalter1 dans le forum Administration
    Réponses: 1
    Dernier message: 30/01/2007, 16h37

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