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 :

[9.2] Table inaccessible


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut [9.2] Table inaccessible
    Bonjour,

    Je m'occupe depuis peu de plusieurs bases de données avec interfaces access et données sur Oracle 9.2 dans ma boite.
    Le problème est que régulièrement il y a une table commune à plusieurs programmes qui ne répond plus. Cela dure environ pendant 30 min - 1 heure et elle est de nouveau accessible ensuite.
    Je ne comprends pas de quoi cela peut-il venir ? Une requete mal construite peut elle faire rendre inaccessible une table d'Oracle (comme une boucle infinie...) ? (elle n'est plus accessible ni depuis SQL+ ni depuis la console OEM, ni depuis Access, ces programmes se plantent lorsqu'ils tentent d'y accéder).

    Cela vous est-il déjà arrivé ?
    Si des lumières peuvent m'éclairer....

    Cordialement
    Benoit

  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
    Par défaut
    Bonjour ,
    Votre probléme est pour le moins supremant .

    Cependant veuillez à étre précis , que veut dire inacessible , qu'elle est le statut de votre session ....

    ëtre factuelle est précis ...

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    Désolé je précise :
    J'entendais par inaccessible que le programme à partir du quel je lance une requête sur la table en question (un simple desc ou select) se bloque et ne réponds plus.
    J'ai essayé d'accéder à la table avec Access, SQL+, et par OEM en essayant de visualiser le contenu de la table (connecté en tant que "Normal") par clic droit / Afficher modifier le contenu).
    Access affiche un message d'erreur : echec appel ODBC au bout d'un certain temps après la requête, 1 à 2 min, (l'accès aux autres tables de la base continuant à fonctionner.)

    La base Oracle contient de nombreuses autres tables qui fonctionnent sans problème. Seul l'accès à cette table pose problème pendant des périodes de 30min - 1h. Ensuite tout redevient normal. Je soupsone une requête à partir d'Access mal formulée ou quelque chose du genre qui provoquerait une connexion impossible à la table jusqu'à un timeout , est-ce possible d'obtenir ainsi ce problème ?

    Benoit

  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
    Par défaut
    non
    pourriez vous nous dire qu'elle est l'état de la session bloqué dans la vue v$session_wait

    Jaouad

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    Comment puis-je obtenir l'état de la session bloqué ?

    Benoit

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut [8.1] Table inaccessible
    Correction, la base tourne sous Oracle 8.1.7 :

    Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
    PL/SQL Release 8.1.7.0.0 - Production
    CORE 8.1.7.0.0 Production
    TNS for 32-bit Windows: Version 8.1.7.0.0 - Production
    NLSRTL Version 3.4.1.0.0 - Production

  7. #7
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select event from v$session_wait

  8. #8
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    est-ce que par hasard il n'y aurait pas un VERROUS sur cette table (calcul des stats par exemple) ? ;-)

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    alors voici ce que j'ai trouvé :

    le SID qui accède à la table est en row cache lock et TOTAL_WAITS = 102
    TOTAL_TIMEOUTS = 102
    SECONDS_IN_WAIT = 218
    STATE = WAITING
    ces valeurs augmentant au fur et à mesure.

    Pourquoi le SID reste en row cache lock ?

    Benoit

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    Citation Envoyé par LeoAnderson
    est-ce que par hasard il n'y aurait pas un VERROUS sur cette table (calcul des stats par exemple) ? ;-)
    Euh comment fait-on pour voir s'il y a un verrou sur la table?
    (désolé je commence l'administation de base Oracle, je ne connais pas tout encore )

    Benoit

  11. #11
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Par exemple :
    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
    SELECT DISTINCT a.object_name,
           a.owner object_owner,
           Decode(b.locked_mode, 0, 'None',
                                 1, 'Null (NULL)',
                                 2, 'Row-S (SS)    [SELECT FOR UPDATE]',
                                 3, 'Row-X (SX)    [INSERT/UPDATE/DELETE]',
                                 4, 'Share (S)' ,
                                 5, 'S/Row-X (SSX)',
                                 6, 'Exclusive (X) [ALTER/DROP/TRUNCATE TABLE/INDEX]',
                                 b.locked_mode) locked_mode,
           b.session_id sid,
           b.oracle_username,
           b.os_user_name,
           c.BLOCK AS Sessions_Bloquees
      FROM all_objects a,
           v$locked_object b,
           v$lock C
     WHERE a.object_id = b.object_id
       AND C.SID = B.SESSION_ID
     ORDER BY 1;

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    J'ai en effet un verou de type Row-X (SX) [INSERT/UPDATE/DELETE] sur ma table.
    On ne peut donc ni insérer, supprimer ni mettre à jour de données ?
    Comment peut-on supprimer ce verrou ?


    Benoit

    (J'ai aussi un pb similaire sur une autre table, lorsque j'essaye de modifier une donnée sous sql+ ou OEM, ces programmes se gèlent, mais la table en question n'a pas de vérou... je reprends la base telle quelle et l'admin vient de partir et les problèmes arrivent ... )

  13. #13
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Tout d'abord, on ne supprime pas un verrous !
    Un verrou cela signifie que quelqu'un a "pris une option" sur les données. On pourra agir uniquement lorsqu'il aura dit "ok, je valide" (COMMIT) ou "tant pis, je fais pas" (ROLLBACK).
    C'est le B-A-BA de la gestion des transactions.

    Ensuite, le verrous étant un verrous ligne, vous pouvez accéder à la table sauf au(x) ligne(s) "réservées" par une autre sessions.
    [edit]
    Le plus simple pour vous en assurez, vous faites :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     SELECT * FROM MATABLE WHERE <Condition de clé primaire pour ne prendre qu'une seule ligne> FOR UPDATE NOWAIT;
    Si aucune exception n'est levée, ce n'est pas un problème de verrous.
    Faites alors un ROLLBACK;
    [/edit]

    Sinon, combien de sessions étaient indiquées comme "bloquées" ?

    Par contre, je me demande si on ne serait pas dans le cas d'une clé étrangère non indexée...

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 11
    Par défaut
    J'ai fait un select sur un numero de cle unique avec FOR UPDATE NOWAIT, je n'ai eu aucun message d'erreur j'ai donc efectué un rollback. Il n'y a plus de verou posé sur la table.

    question : lorsqu'Access ajoute une donnée dans une base Oracle, il doit faire un COMMIT automatiquement non ?

    par contre un autre verou a été posé par un utilisateur à partir d'Access et je ne peux pus faire de select sur la table, sql se freeze....
    Cet utilisateur possède deux SID :
    un est en library cache lock et l'autre est en row cache lock avec les TOTAL_TIMEOUTS qui augmentent..

    Je ne suis pas sorti de mes pbs !

    Benoit

  15. #15
    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
    Par défaut
    Bonjour si vous avez un lock sur ces tables il faut killer la session

    si vous avez le SID et le serial# que vous récupérez ainsi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select SID, SERIAL# from v$session where SID=xx
    puis sous un compte DBA vous supprimez la session :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alter system kill session 'SID,SERIAL#' ;
    SMon s'occupera dans la foulée de libérer la ressource.

    NOrmalement ces ressources se libérent également à chaque arrêt redémarrage de la base


    Jaouad

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

Discussions similaires

  1. Table inaccessible en insert/update via code C#
    Par rockley dans le forum Oracle
    Réponses: 7
    Dernier message: 09/03/2012, 14h31
  2. Bouton Edit d'une table inaccessible dans la version 2.1
    Par sat83 dans le forum Sql Developer
    Réponses: 3
    Dernier message: 13/04/2011, 09h57
  3. Copie de BDD : Tables inaccessibles
    Par CinePhil dans le forum Administration
    Réponses: 1
    Dernier message: 31/07/2009, 18h59
  4. Table appartenant à SYS inaccessible
    Par gamelu dans le forum PL/SQL
    Réponses: 5
    Dernier message: 17/06/2009, 11h17
  5. Table inaccessible
    Par Hervé Chanut dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 08/02/2006, 12h49

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