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 :

[Oracle et Forms] : pb de verrous


Sujet :

Forms Oracle

  1. #1
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Par défaut [Oracle et Forms] : pb de verrous
    Bonjour,

    je rencontre depuis quelque temps sur une application des problèmes de verrous.
    Le caractére de ces verrous est assez aléatoire, il peut se passer une semaine sans verrou et puis il peut y en avoir 2 jours de suite.

    Je n'arrive à pas déterminer si c'est la configuration de la base Oracle ou le paramétrage de forms qui pourrait être à l'origine.
    Je suis sous Forms6 sur une base Oracle 9i 9.2.0.6.
    Les blocs de données de tous les forms ont l'option Mode de verrouillage positionné à Automatique.
    Sous Toad j'arrive à voir que le paramétre optimizer_mode est à CHOOSE

    Pour moi, le verrou doit se positionner sur l'enregistrement en insert/update et non sur toute la table.
    Car une fois un verrou posé sur une table suite à une action d'un utilisateur, les autres utilisateurs sont bloqués.

    Faut il modifier le mode de verrouillage sous Forms, est ce le paramétrage de la base ?

    D'avance merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Forms ne verrouille pas la table, mais seulement la ligne en cours de modification. Bien sur, un traitement modifiant chaque ligne du bloc pourrait, locker toute les lignes de la table, mais il ne s'agira quand même pas d'un verrou de table.
    N'avez vous pas des traitements, interfaces, procédures d'administration qui tenteraient de verrouiller vos tables?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Par défaut
    A ma connaissance non. Je vais creuser de ce côté pour voir.

    Concernant mon probléme, petites précisions les utilisateurs ne travaillent jamais sur les même enregistrements.

    Je ne vois pas du coup, pourquoi l'utilisateur suivant, qui fait une mise à jour sur la même table, est bloqué.

  4. #4
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Par défaut
    Les problémes de verrous sont dûs à des lock de session, c'est la session utilisateur qui en serait à l'origine.

    Quelles peuvent être les sources de ce type de verrous ?

    Est ce que le fait de ne pas validé de suite le message "transaction terminée - opération enregistrée" ( apparait dans une boîte de dialogue en fin de commit), peut être une cause.

    Merci

  5. #5
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Citation Envoyé par Nargel33 Voir le message
    Est ce que le fait de ne pas validé de suite le message "transaction terminée - opération enregistrée" ( apparait dans une boîte de dialogue en fin de commit), peut être une cause.

    Merci
    Absolument pas. Le commit a été effectué en base et les verous sont levés, que vous validiez cette boite de dialoge ou pas.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 42
    Par défaut
    Vous pouvez regarder du côté des tables avec des Foreign Key sans index dessus.
    J'ai eu le cas justement avec une application Forms.
    Des problèmes très aléatoires, impossible à reproduire, mais au final c'était bien du à cela.
    Pour information, vous pouvez vous référer au fil de discussion concernant les Foreign Key sans index :

    http://www.developpez.net/forums/sho...d.php?t=451265

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 349
    Par défaut
    FYI

    investigation du coté des BITMAPS INDEXS ....

    As describe above this procedure create a new tariff for the user and records are inserted into the table DEMDET_CHARGE_MATRIX, the transaction is not COMMITED ( this is normal for FORMS, the COMMIT or the ROLLBACK operations are usually done on the event EXIT_FORMS ). The transaction handles a lock on the BITMAP INDEX OBJECTS while the users stay in the screen.

    CONCLUSIONS


    A) Put a COMMIT after the call of the procedure DP_DEMDET_CHARGES.P_CREATE_USER_TARIFF inside the procedure PKG_DCM1_DCR1.P_KEY_NEXT_ITEM (as it’s done in the procedure PKG_DCM1_DCR1.P_MODIFY_PROPOSED_TARIFF ). However, it will be necessary to check the side effect of this COMMIT. But I think it’s should be possible because it’s done as it inside the procedure PKG_DCM1_DCR1.P_MODIFY_TARIFF.

    To be sure that we have identified all the functional cases, some new tests must be done by the dev team and the functional team to check the concurrent access.

    Additionally, a method could be to LOCK in the DEV environment the TABLE DEMDET_CHARGE_MATRIX and check all the INSERT, UPDATE or DELETE which are made on this table by the FORMS PFS7300, and check all potential locking issues.

    B) The index BITMAP INDEX is not advised in OLTP environment. However, if we remove them we could expected some performance issues with the BATCH DEMDET.

    Subject: INSERT HANGS ACQUIRING LOCK/BLOCKS OTHER INSERTS WHERE BITMAP INDEXES ARE USED
    Doc ID: Note:191561.1 Type: TROUBLESHOOTING
    Last Revision Date: 21-OCT-2005 Status: PUBLISHED


    PROBLEM
    =======
    INSERT HANGS ACQUIRING LOCK THAT BLOCKS OTHER INSERTS

    PROBLEM DESCRIPTION
    ===================

    When a row is inserted into a relational table, it acquires lock and
    blocks other inserts until the first insert is either committed
    or rolled back

    Running utllockt.sql from other session shows the following :

    WAITING_SESSION LOCK_TYPE MODE_REQUESTED MODE_HELD LOCK_ID1 LOCK_ID2
    --------------- ----------- -------------- --------- -------- --------
    34 None
    48 Transaction Share Exclusive 262239 5748

    All the indexes and the constraints were checked and were proper.
    There is a bitmap index on the particular table

    SOLUTION
    ========
    Remove the bitmap index and use normal index to this table and
    insert the rows again.


    SOLUTION EXPLANATION
    =====================
    Bitmap index was the cause for this lock.

    Each 'entry' in a bitmap index can cover many rows in the actual table.
    If 2 sessions wish to update rows covered by the same bitmap index
    fragment then the second session waits for the first transaction to
    either COMMIT or ROLLBACK by waiting for the TX lock in mode 4(SHARE).

    When the bitmap index was removed and replaced by normal index, the
    insert worked regardless of any values.


    Waits due to rows being covered by the same BITMAP index fragment
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Bitmap indexes index key values and a range of ROWIDs. Each 'entry'
    in a bitmap index can cover many rows in the actual table.

    If 2 sessions wish to update rows covered by the same bitmap index
    fragment then the second session waits for the first transaction to
    either COMMIT or ROLLBACK by waiting for the TX lock in mode 4.

    Eg: Ses#1: CREATE Bitmap Index tx_eg_bitmap on tx_eg ( sex );
    Ses#1: update tx_eg set sex='FEMALE' where num=3;
    Ses#2: update tx_eg set sex='FEMALE' where num=4;
    DBA: select SID,TYPE,ID1,ID2,LMODE,REQUEST
    from v$lock where type='TX';

    SID TY ID1 ID2 LMODE REQUEST
    ---------- -- ---------- ---------- ---------- ----------
    8 TX 262151 62 6 0
    10 TX 327680 60 6 0
    10 TX 262151 62 0 4

    This shows SID 10 is waiting for the TX lock held by SID 8 and it
    wants the lock in share mode (as REQUEST=4).

    Ses#1: commit;
    Ses#2: commit;

  8. #8
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Par défaut
    Bonjour,

    Tout d'abord, c'ets de saison, Bonne année et meilleur voeux à tous

    Je reviens sur le problème de verrous dans mon application :

    un utilisateur appel un écran, celui contient un bloc basé qui retourne les informations demandées.
    L'utilisateur effectue des modifications sur les données : changement de date ou de code ; mais il ne valide pas ses modifications (car il ne veut pas) et reste sur l'écran.
    Ceci à déclencher un verrou (Type ROW-X(SX)) mais semble-t-il sur toute la table (??) et bloquer d'autres utilisateurs qui voulaient effectuer une modification sur cette table mais pas sur le même enregistrement.

    Ce cas semble se produire lorsque l'utilisateur reste un certain temps (non meseuré) en modification sans validation sur l'écran.
    J'ai tenté de reproduire le cas en restant un quart d'heure et en simulant des modifications sur la même table par d'autres transactions et sessions, sans arriver à la même conséquence

    Avez vous une explication sur ce cas.

    J'espére avoir été clair.

  9. #9
    Membre averti
    Inscrit en
    Novembre 2005
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 49
    Par défaut
    La persistence de verrous sur table, peut elle être dû à un problème de communication entre le serveur applicatif Forms et la base données.
    En effet, un utilisateur valide une transaction, à son niveau tout se passe bien, mais au niveau de la base le verrou persiste et bloque les utilisateurs suivant qui veulent faire une mise à jour.

    Après, cela rejoint la question de mon message précedent, pourquoi la table est verrouillée (ou semble l'être) alors que la transaction ne concerne qu'un enregistrement (sauf particularité que je ne connais pas).

Discussions similaires

  1. [Oracle 9i / Forms 6] Presse-papier Windows
    Par Yoh dans le forum Forms
    Réponses: 2
    Dernier message: 12/07/2006, 10h58
  2. Réponses: 1
    Dernier message: 16/05/2006, 21h22
  3. [ORACLE 9i] [FORMS 6i]: Ralentissements
    Par anaon dans le forum Oracle
    Réponses: 12
    Dernier message: 08/03/2006, 14h44
  4. Oracle XE, Forms et Des6i, configurer ?
    Par patmaba dans le forum Oracle
    Réponses: 6
    Dernier message: 18/11/2005, 17h12
  5. Exportation des données d'une base Oracle sous forms
    Par moezsokrati dans le forum Forms
    Réponses: 4
    Dernier message: 13/10/2005, 08h55

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