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 :

Limites des procedures stockées


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 44
    Points : 25
    Points
    25
    Par défaut Limites des procedures stockées
    bonjour, je n'arrive pas à trouver l'info sur le web alors j'ai besoin de votre aide.


    en 2 mot, une application JAVA traite la mise en base de fichier (ORACLE 8)
    une fois la mise en base terminée, des calcul de cohérence sont effectués.
    (une bonne grosse procédure)

    ce même calcul peut être déclenché par un utilisateur avec 1 ou 2 opération dans l'application.


    Ca marche bien !
    mais lorsque l'activité augmente, on s'aperçoit que de temps en temps, un des calculs n'est pas fait.


    une première hypothèse est que les utilisateurs et le traitement automatique se gênent mutuellement, un prend la main et l'autre n'a pas le droit à son calcul.

    sachant que la même procédure peut être appelée 4 ou 5 fois en même temps
    cible les même table mais pas les même lignes (traitement long)
    et table à 5 millions d'entrées

    quelles sont les limites d'utilisation des procédures ?
    avez vous d'autres idées que mon hypothèse de "trop d'utilisation simultané"
    je pensais aussi à un défaut de mémoire temporaire compte tenu de la taille de la table


    merci davance

  2. #2
    Membre du Club Avatar de lmartin
    Inscrit en
    Avril 2008
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 61
    Points : 68
    Points
    68
    Par défaut
    Vous avez vérifié la cohérence du code.
    Ca ressemble à un bugg applicatif.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    oui oui le code est correct, d'après mes vérifications

    ce qui me surprend c est que dans 99% des cas ça fonctionne y compris en multiutilisateur et de temps en temps : rien

    pas de msg d'erreur mais les traitement ne se font pas pour un des utilisateurs.
    celui ci relance la procédure sur les même données, et ça marche...

    pour le moment aucun plantage de ce type n'est à déplorer lorsque la procédure est appelée qu'une seule fois. (5 ans d'utilisation)

    mais je cherche a comprendre comment certaines fois, on passe à coté, je me posais la question donc si ce genre de cas était arrivé sachant que la version est ancienne (8) que la table concernée contient près de 5 millions d'entrées,
    et donc la question sur les "limites" plus que sur le code

    pour le code il y a peu de chance qu'on ait 2 comportements différent avec les mêmes entrées

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Janvier 2007
    Messages : 149
    Points : 167
    Points
    167
    Par défaut
    Ca m'est arrivé sur une donnée java déclarée en statique qui n'avait rien à faire en statique ^^
    Mon site : TKT-Web =)

  5. #5
    Membre confirmé Avatar de miloux32
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    545
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 545
    Points : 565
    Points
    565
    Par défaut
    Citation Envoyé par morback Voir le message
    oui oui le code est correct, d'après mes vérifications

    ce qui me surprend c est que dans 99% des cas ça fonctionne y compris en multiutilisateur et de temps en temps : rien

    pas de msg d'erreur mais les traitement ne se font pas pour un des utilisateurs.
    celui ci relance la procédure sur les même données, et ça marche...

    pour le moment aucun plantage de ce type n'est à déplorer lorsque la procédure est appelée qu'une seule fois. (5 ans d'utilisation)

    mais je cherche a comprendre comment certaines fois, on passe à coté, je me posais la question donc si ce genre de cas était arrivé sachant que la version est ancienne (8) que la table concernée contient près de 5 millions d'entrées,
    et donc la question sur les "limites" plus que sur le code

    pour le code il y a peu de chance qu'on ait 2 comportements différent avec les mêmes entrées
    J4ai deja eu des cas comme ca ... si les utilisateurs manipulent les mêmes lignes au même moment (en java).
    La partie java auto-écrase les modifs ... regarde de ce coté là aussi.

    Je ne sais pas comment se fait ton accés aux données en java mais moi j'avais un accés comme ça :
    1 -> utilisateur 1 : récupération de la ligne (partie java)
    2-> utilisateur 2 : récupération de la meme ligne (partie java) => ligne non modifiée
    3-> traitement des données de l'utilisateur 1
    4 -> mise a jour des données de la ligne (utilisateur 1 )
    5-> traitement des données de l'utilisateur 2 => a partir des MEMES données que le 1
    5 -> mise a jour des données de la ligne (utilisateur 2 ) => donc écrasement des données de l'utilisateur 1


    Le problème etait d'autant plus complexe que comme toi mes utilisateurs traitaient des milliers de lignes en même temps et que la chance que 2 personnes traitent la même en même temps est tres faible.
    C'est pas parce que ca marche que c'est bon!!
    Pensez au bouton "Résolu"
    Je ne réponds pas en privé aux questions

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 44
    Points : 25
    Points
    25
    Par défaut
    non non à priori pas de danger d'utilisation des mêmes données, en revanche il s'agit bien des mêmes tables


    pour détailler un peu plus la structure du prog en java:

    il y a un client RMI qui récupère les fichiers et met en base, et sou il lance le fameux calcul (une procédure stockées qui va aussi écrire dans la base).

    de la, l'utilisateur va sur les nouvelles ligne grâce à un autre client (non RMI)
    et fait des traitement sur les données déjà en base, traitement qui nécessite le recalcule


    du coup dans le même temps je peux avoir 1 fichier qui entre en base, un autres en calcul et XX en calcul suite a des manips utilisateur


    je posais naturellement la question car j'ai pu lire chez microsoft que SQLSERVER avait un problème lors d'appels multiple de procédures qui attaquaient la même table.


    le taux d'erreur dans notre cas n'excède pas les 0.01 % mais quand ca arrive c 'est très gênant.

    d'où mes hypothèses sur l'environnement plutôt que sur le code.


    concernant les interblocage ou les problèmes transactionnels dont tu fait part, ce n'est pas vraiment le cas
    l'utilisateur n'intervient que sur des données en base, et le processus d'entrée en base s'effectue avant.

    il s'agit donc bien d'actions sur des lignes differentes (a coup sur, pas de doublon)
    c est juste que de temps en temps, coté utilisateur ou entrée de donnée, le calcul n'est pas effectué, pas de msg d'erreur, mais les colonnes associées à ce calcul sont totalement vide.
    comme si la procedure n'etait jamais lancé et que le programme java ne s en rendait pas compte.

    or j'ai vérifier que les opération de contrôles était présent ( retour de la procédure).


    et donc... je sèche lamentablement

Discussions similaires

  1. Organsation des procedures stockées
    Par Clorish dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 03/12/2007, 23h28
  2. implementer des procedures stockées dans du java
    Par stardeus dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 29/05/2007, 13h39
  3. Réponses: 2
    Dernier message: 24/03/2006, 09h55
  4. Impossible de créer des procedures stockée ==> ERREUR 106
    Par JMS_PCO dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 27/02/2006, 17h33
  5. Autorisations des procedures stockées
    Par Devilcat20 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 19/08/2005, 09h14

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