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

Forms Oracle Discussion :

Perte d'enregistrement après commit [10g]


Sujet :

Forms Oracle

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 28
    Points : 23
    Points
    23
    Par défaut Perte d'enregistrement après commit
    Bonjour
    j'utilise oracle 10g avec oracle suite développer 10g .Le problème est que j'utilise un table sur laquelle j’insère des enregistrement avec commit.
    j’édite mes états , puis après un certain moments je constate que des enregistrements sont perdus .
    est ce possible de perdre des ligne après un commit ?
    le commit se trouve dans une procédure stocké que j'appelle avec forms développer suite 10g .
    Merci d'avance pour votre aide .

  2. #2
    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
    Non,Oracle n'existerait plus aujourd'hui si des enregistrements validés via commit disparaîtriez de la base!

  3. #3
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Vérifier le script de DDL de la table, ne serait ce pas une Global Temporary Table ?

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Pour vérifier , j'ai créer une deuxième table temporaire dans laquelle je duplique les enregistrements .
    J'ai constaté que les enregistrement perdus se trouve dans cette deuxième table .
    J'ai même creer un trigger delete sur cette table pour vérifier s'il y'a des suppression volontaire par des utilisateur , mais j'ai rien trouvé de suspect .
    c'est un vrai cauchemar.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Désolé , Global Temporary Table ?

  6. #6
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Temporary Tables
    J'aurais dû écrire, vérifier le script de création de la table avec sqldeveloper ou autre outil.

    Sinon que donne cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select table_name, tablespace_name, duration
      from user_tables
     where table_name = upper('LE_NOM_DE_LA_TABLE');

  7. #7
    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
    Est-ce que la première table est une table temporaire elle aussi?

    Si oui, comment a-t-elle été créée? Pour le savoir, exécute ce code et poste le résultat. Si ça ne marche pas, remplace TABLE par VIEW.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL> set long 1000000;
    SQL> select dbms_metadata.get_ddl('TABLE', 'nom_table', 'schema') from dual;
    Ce que je pense c'est que la table temporaire n'a pas été créée avec l'option ON COMMIT PRESERVE ROWS, donc lors du COMMIT sur cette table temporaire, les données sont effacées.
    Si cette table temporaire a été créée avec l'option ON COMMIT PRESERVE ROWS, il faut savoir qu'aucun autre utilisateur (si on a une table GLOBAL TEMPORAIRE) ne peut voir les données de cette table, même s'il y a eu un COMMIT. Plus fort, le user qui a fait le COMMIT peut voir les données de la table temporaire après le COMMIT si on a eu l'option ON COMMIT PRESERVE ROWS mais s'il ouvre une autre session, il ne verra pas ces données

    Je me permets donc, dans ce cas très précis de table temporaires, globales ou non, de corriger, avec respect, mnitu :
    Non,Oracle n'existerait plus aujourd'hui si des enregistrements validés via commit disparaîtriez de la base!
    c'est possible dans le cas d'une table temporaire sans l'option ON COMMIT PRESERVE ROWS.

    Dernière question, quand tu dis
    après un certain moments je constate que des enregistrements sont perdus
    , quel est le test que tu fais pour affirmer cela?
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  8. #8
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Même avec l'option ON COMMIT PRESERVE ROWS, les données ne sont pas préservées au delà de la durée de la session.

    Il est tout à fait possible qu'après un certains laps de temps une nouvelle session oracle soit utilisée et donc que les données ne soit plus disponibles.

    Par ailleurs, je ne vois pas ce que peut être une table temporaire non globale sur oracle.

  9. #9
    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
    Pas au delà de la session d'accord, mais les données sont quand même préservées après le COMMIT.

    Par opposition aux tables GLOBAL TEMPORAY TABLE, il est possible de créer des tables LOCAL TEMPORARY.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DECLARE LOCAL TEMPORARY TABLE table_name
    ( column1 datatype [ NULL | NOT NULL ],
      column2 datatype [ NULL | NOT NULL ],
      ...
      column_n datatype [ NULL | NOT NULL ]
    );
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  10. #10
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    2 947
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 2 947
    Points : 5 846
    Points
    5 846
    Par défaut
    Citation Envoyé par Ikebukuro Voir le message
    Par opposition aux tables GLOBAL TEMPORAY TABLE, il est possible de créer des tables LOCAL TEMPORARY.
    J'ai regardé vite fait, mais je ne trouve rien de très probant pour du Oracle Database.
    Ça a plus l'air d'être lié à d'autres produit Oracle comme javadb et Oracle RDB.
    Mais je suis intéressé par tout lien vers la doc ou exemple.

  11. #11
    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
    Je me permets donc, dans ce cas très précis de table temporaires, globales ou non, de corriger, avec respect, mnitu :...
    C'est correct mais je dois également remarquer que le poste #3 fait par skuatamad suggérait que j'avais oublié à évoquer ce cas. Merci à vous deux!

  12. #12
    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
    Citation Envoyé par skuatamad Voir le message
    J'ai regardé vite fait, mais je ne trouve rien de très probant pour du Oracle Database.
    Ça a plus l'air d'être lié à d'autres produit Oracle comme javadb et Oracle RDB.
    Mais je suis intéressé par tout lien vers la doc ou exemple.
    A ma grande surprise je ne trouve pas d'exemple sur CREATE LOCAL TEMPORARY TABLE alors que j'étais sur que c'était possible... donc une table temporaire doit être toujours globale pour Oracle?
    Je me demande dans ce cas là pourquoi on précise GLOBAL...

    [EDIT]
    Voici un lien pour ceux que ça intéresse sur les tables temporaires non globales. Visiblement c'est à réserver pour les programmes PL/SQL.
    https://www.techonthenet.com/oracle/...local_temp.php
    DBA Oracle
    Rédacteur du blog : dbaoraclesql.canalblog.com

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 28
    Points : 23
    Points
    23
    Par défaut
    Merci tout le monde pour votre aide précieuse.

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

Discussions similaires

  1. [AC-2007] Perte d'enregistrement après requête
    Par thomas17180 dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 10/10/2012, 11h17
  2. Perte d'enregistrements
    Par AnnSo dans le forum Paradox
    Réponses: 15
    Dernier message: 06/08/2006, 23h39
  3. [CR8.5] Perte d'enregistrement sur passage recto/verso
    Par jldlci dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 20/12/2004, 10h14
  4. Mise à jour enregistrements après impression
    Par alalau dans le forum Access
    Réponses: 2
    Dernier message: 17/12/2004, 16h13
  5. Perte du password après compactage avec Jet
    Par Le Lézard dans le forum Bases de données
    Réponses: 10
    Dernier message: 07/06/2004, 11h37

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