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 :

Drop de GLOBAL TEMPORARY TABLE


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Consultant
    Inscrit en
    Août 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Août 2010
    Messages : 30
    Points : 34
    Points
    34
    Par défaut Drop de GLOBAL TEMPORARY TABLE
    Bonjour,

    J'utilise des tables temporaires Oracle, ci dessous un exemple de script :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    create GLOBAL TEMPORARY table MPA_GTT
    ON COMMIT PRESERVE ROWS  as
    select * from dual;
     
    -- trt applicatif
    -- ...
     
    drop table MPA_GTT purge;
    Le souci que je rencontre est l'erreur ORA-14452, sur l'instruction de drop, et je coince. Pourriez-vous m'orienter dans mes recherches ?

    Erreur SQL : ORA-14452: tentative de création, modification ou suppression d'un index sur une table temporaire déjà en cours d'utilisation
    14452. 00000 - "attempt to create, alter or drop an index on temporary table already in use"
    *Cause: An attempt was made to create, alter or drop an index on temporary
    table which is already in use.
    *Action: All the sessions using the session-specific temporary table have
    to truncate table and all the transactions using transaction
    specific temporary table have to end their transactions.

    Avant le drop j'ai essayé de faire un COMMIT ou un Rollback, mais cela n'a rien changé.

    Merci de votre retour

  2. #2
    Nouveau membre du Club
    Profil pro
    Consultant
    Inscrit en
    Août 2010
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant

    Informations forums :
    Inscription : Août 2010
    Messages : 30
    Points : 34
    Points
    34
    Par défaut
    Je viens de constater que les instructions COMMIT et ROLLBACK n'ont pas d'effet sur les GTT.

    Si j'ajoute une instruction de truncate juste avant le DROP, cela fonctionne parfaitement.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    create GLOBAL TEMPORARY table MPA_GTT
    ON COMMIT PRESERVE ROWS as
    select * from dual;
     
    -- trt applicatif
    -- ...
     
    truncate table MPA_GTT;
     
    drop table MPA_GTT purge;

  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
    Pourquoi quelqu'un voudrais détruire (drop) une table temporaire voir faire truncate ?

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par tazoune Voir le message
    Je viens de constater que les instructions COMMIT et ROLLBACK n'ont pas d'effet sur les GTT.
    Il doit y avoir une erreur dans vos tests alors !
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre émérite
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    1 993
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 993
    Points : 2 499
    Points
    2 499
    Par défaut
    Oracle a créé une option "ON COMMIT PRESERVE ROWS", ce qui prouve que le COMMIT affecte bien les tables temporaires.
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  6. #6
    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 mnitu Voir le message
    Pourquoi quelqu'un voudrais détruire (drop) une table temporaire voir faire truncate ?
    Overview of Temporary Tables
    A temporary table holds data that exists only for the duration of a transaction or session. Data in a temporary table is private to the session, which means that each session can only see and modify its own data.
    ...
    Segment Allocation in Temporary Tables


    Like permanent tables, temporary tables are persistent objects that are statically defined in the data dictionary. Temporary segments are allocated when a session first inserts data.

    Until data is loaded in a session, the temporary table appears empty. For transaction-specific temporary tables, the database deallocates temporary segments at the end of the transaction. For session-specific temporary tables, the database deallocates temporary segments at the end of the session.

Discussions similaires

  1. Réponses: 19
    Dernier message: 05/01/2014, 09h48
  2. Utilisation de global temporary tables
    Par LEK dans le forum SQL
    Réponses: 21
    Dernier message: 17/09/2012, 15h53
  3. global temporary table en cache ?
    Par 13thFloor dans le forum Administration
    Réponses: 3
    Dernier message: 04/03/2008, 19h34
  4. Global Temporary Table
    Par pdiaz dans le forum Administration
    Réponses: 2
    Dernier message: 21/03/2007, 12h08
  5. Drop of global temporary table
    Par dev_ora_moimeme dans le forum Oracle
    Réponses: 8
    Dernier message: 07/07/2006, 17h22

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