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 :

[Global temporary]Transaction sur table temporaire


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 116
    Points
    116
    Par défaut [Resolu][Global temporary]Transaction sur table temporaire
    Bonjour tout le monde,

    j'ai un sérieux problème:
    afin de faire un import XML, je passe par des tables temporaires (global temporary, on commit reserve rows). Afin de faire mes contrôles, j'ai mis des contraintes du style primary key et unique. Pour ne pas être bloqué lors du remplissage de mes tables tempo, je désactive l'ensemble des contraintes, puis j'aimerai bien les réactiver. Le problème c'est que lors de la réactivation, dès qu'une table a subi un insert, une transaction m'empêche de réactiver les contraintes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ORA-14450: attempt to access a transactional temp table already in use
    J'ai eu beau commiter après mes insert (commit, je reste bloqué par cette transaction. Y a-t-il un moyen de mettre fin à cette transaction et si oui lequel? (à moins qu'il faille éviter de mettre des contraintes d'intégrité sur les tables tempo :/ )

    Merci d'avance

  2. #2
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Bonjour ,
    Recherche les sessions qui bloque la table et kill les .


    Jaouad

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 116
    Points
    116
    Par défaut
    Et bien c'est ma session courante, difficile de la killer :/

  4. #4
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Non c'est juste que tu ne voit pas les autres sessions
    Car Oracle crée une table pour chaque Session

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 116
    Points
    116
    Par défaut
    Via l'enterprise manager, je viens de regarder les sessions, je n'ai qu'une seule session sur cette base: celle qui lance ma procédure. D'autre part j'ai fait un test avec une table classique dans la même base, tout s'est bien passé. On dirait que le commit sur la table tempo n'est pas pris en compte....dans le doute j'ai essayé avec des autonomous_transaction, même erreur...

  6. #6
    Membre régulier
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2003
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2003
    Messages : 148
    Points : 118
    Points
    118
    Par défaut
    Bonjour,
    Ce problème est normal avec l'option on commit preserve rows sur cette table. si tu relance ta requête et après avoir reçu l'erreur, tu peux lancer la requête suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    select * from v$lock
        where id1 = ( select object_id from user_objects where object_name = 'TABLE_NAME' );
    la solution à ton problème est avant d'activer les contraintes se deconnecter et se reconnecter.

    Cordialement.

  7. #7
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Bonjour,

    Essaye de lancer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$enqueue_lock;

  8. #8
    Rédacteur

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 320
    Points : 3 798
    Points
    3 798
    Par défaut
    Citation Envoyé par bouyao
    Bonjour,

    Essaye de lancer la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from v$enqueue_lock;
    il ne me semble pas que cela soit possible car pour le GTT pour chaque session , oracle crée une instance qui ne bloque pas les autres ( pour Oracle ) donc pas d'apparition dans la cette vue

    D'ou le malaise

  9. #9
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 116
    Points
    116
    Par défaut
    Merci, je vais voir s'il m'est possible de faire cette déco/reco, sachant que tout ceci est pour un traitement automatisé de nuit, donc moins on lance de scripts mieux on se porte ;-)

  10. #10
    Membre expert
    Avatar de bouyao
    Inscrit en
    Janvier 2005
    Messages
    1 778
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 778
    Points : 3 033
    Points
    3 033
    Par défaut
    Moi je pensais au verrou enqueue du type TO

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

Discussions similaires

  1. Left outer join sur table temporaire
    Par shafomat dans le forum SQL
    Réponses: 3
    Dernier message: 02/09/2011, 11h58
  2. Statistiques des indexs sur tables temporaires
    Par gaboo_bl dans le forum Administration
    Réponses: 3
    Dernier message: 24/07/2009, 17h41
  3. Réponses: 4
    Dernier message: 21/05/2008, 11h56
  4. Obtenir des informations sur table temporaire
    Par davidou2001 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/06/2007, 16h36
  5. Réponses: 1
    Dernier message: 20/04/2006, 17h18

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