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

Administration Oracle Discussion :

Déterminer la fréquence d'une séquence


Sujet :

Administration Oracle

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut Déterminer la fréquence d'une séquence
    Bonjour,

    J'espère être dans la bonne section...

    Je me tourne vers les cadors d'Oracle car je ne trouve pas d'informations pertinentes sur ma question.

    Nous avons une séquence qui génère un identifiant unique et je voudrais savoir s'il est possible de trouver la fréquence d'utilisation de cette séquence ???

    Ce qui me permettrait de faire des statistiques.

    Merci d'avance.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Je ne vois pas comment répondre littéralement à ce besoin, mais je ne serais pas surpris qu'il soit inutile de le faire, et en tout cas pas par ce biais là.

    Imaginons que arriviez à déterminer que la séquence est appelée 10 fois par jour, ou à l'inverse un millions de fois.
    Qu'allez-vous faire de cette information ? Quelle conclusion vous permet-elle de tirer ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Le but est de savoir si notre client n'a pas une mauvaise utilisation de l'application.

  4. #4
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Si l'appel à la séquence se conclut systématiquement par une insertion, et qu'il n'y a pas trop de suppressions, alors il suffit de suivre l'évolution du nombre de lignes dans la table, voire simplement de consulter la valeur maximale de la clé.

    Mais si vous cherchez (simple hypothèse) à régler des problèmes de performances en vous focalisant sur les séquences, vous prenez les choses par le mauvais bout.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Salut,

    Le problème a été identifié et effectivement c'est parce que nous sommes arrivés à la valeur maximale de la clé

    Je comprends ce que tu me dis concernant la performance, et je suis d'accord, mais j'aimerais savoir quand même s'il est possible de connaitre la fréquence d'utilisation d'une séquence.

    Je peux te trouver rapidement un exemple où cette information serait intéressante

  6. #6
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par quaife Voir le message
    ...Je peux te trouver rapidement un exemple où cette information serait intéressante
    Je suis preneur !!
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 760
    Points : 52 541
    Points
    52 541
    Billets dans le blog
    5
    Par défaut
    Il faudrait enregistrer à intervalle régulier (par exemple toutes les 5 minutes) la valeur courante de la séquence, dans une table de suivi.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    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
    Il y a l'audit pour ça. Mais la question reste à quoi cela pourrais servir. Je reste comme Pomalaix: "preneur"

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Dans notre cas, la séquence génère un identifiant forcement unique et cela correspond à un enregistrement.
    Donc théoriquement, à moins que je ne me trompe, cela nous permettrait d'avoir une "estimation" de l'expansion de la base.

  10. #10
    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
    Dans 99% des cas d'utilisation des séquences c'est pour obtenir un identifiant unique! Mais "l'expansion de la base" c'est le métier qui l'indique et non pas l'analyse post-mortem. D'ailleurs pour tailler la séquence l'estimation de "l'expansion" a été certainement effectué pendant l'analyse qui a précédé le développement de l'application.

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Dans 99% des cas d'utilisation des séquences c'est pour obtenir un identifiant unique!
    Tout à fait. Je savais bien que c'était inutile de le mettre mais je voulais être précis.

    Citation Envoyé par mnitu Voir le message
    Mais "l'expansion de la base" c'est le métier qui l'indique et non pas l'analyse post-mortem. D'ailleurs pour tailler la séquence l'estimation de "l'expansion" a été certainement effectué pendant l'analyse qui a précédé le développement de l'application.
    Pour être franc, je ne pense pas qu'il y a eu d'analyse lors de la mise en place.
    Et le problème a été identifié, il s'agit d'un problème de développement.

    Par contre, à moins que je ne me trompe, il me semble que la surveillance de cette séquence permettrait de faire des probabilités et ainsi lever par exemple une alerte lors d'une exécution "anormale" de celle-ci.

    La proposition de SQLpro me parait intéressante et je vais jeter un oeil.
    Sinon, je suis preneur d'autres méthodes pour contrôler cette séquence ;o)

  12. #12
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par quaife Voir le message
    ...Sinon, je suis preneur d'autres méthodes pour contrôler cette séquence ;o)
    Mais qu'est-ce qu'elle vous a fait, cette séquence ?
    Sérieusement, il faudrait que vous commenciez par exprimer clairement votre vraie problématique.
    Qu'entendez-vous par "mauvaise utilisation de l'application" ou "exécution anormale de la séquence" ?
    Quel est donc le problème concret que vous avez rencontré, ou que vous craignez de rencontrer ?
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Comme je l'ai marqué plus haut, nous sommes arrivés à la limite maximale de notre identifiant... chose qui n'aurait jamais du arriver.

    Le résultat est qu'une fois cette limite atteinte, la séquence génère ensuite des nombres négatifs.
    Autrement dit, plus aucune insertion en base

    Donc, si nous pouvions faire une approximation du nombre d'exécutions (relatif bien sûr au métier) cela permettrait forcement de lever une alerte.

    Suis-je clair ?

  14. #14
    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 quaife Voir le message
    ...
    Le résultat est qu'une fois cette limite atteinte, la séquence génère ensuite des nombres négatifs.
    ...
    Suis-je clair ?
    Non ça n'est pas clair :
    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    SQL> create sequence s start with 1 increment by 1 maxvalue 5;
     
    Sequence created.
     
    SQL> select s.nextval from dual;
     
       NEXTVAL
    ----------
             1
     
    SQL> /
     
       NEXTVAL
    ----------
             2
     
    SQL> /
     
       NEXTVAL
    ----------
             3
     
    SQL> /
     
       NEXTVAL
    ----------
             4
     
    SQL> /
     
       NEXTVAL
    ----------
             5
     
    SQL> /
    select s.nextval from dual
    *
    ERROR at line 1:
    ORA-08004: sequence S.NEXTVAL exceeds MAXVALUE and cannot be instantiated
     
     
    SQL>
    Quel est le DDL de création de la séquence ?
    Etes vous sûr que vous cherchez dans la bonne direction ?

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Un remerciement sincère pour vos réponses mais je tiens à rappeler que je ne viens vous demander si l'application a été bien développée (car forcement, comme dans toutes sociétés, il y a eu des mauvais choix de développement et que de toutes façons il faut faire avec l'historique) mais pour trouver une réponse à ma demande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CREATE SEQUENCE ID MINVALUE 1 MAXVALUE 9999999999 INCREMENT BY 1 START WITH 100000000 CACHE 100 NOORDER  NOCYCLE ;
    Ci-dessus la séquence.

    Tu me diras peut être qu'elle est incohérente, ou tu voudras connaitre plus en profondeur l'application pour savoir si elle est bien adaptée, mais au final la séquence ne changera pas, c'est impossible.
    Et vu la criticité de cette séquence et le problème rencontré, il faut maintenant que nous puissions détecter un éventuel problème en amont.

  16. #16
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    536
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 536
    Points : 1 359
    Points
    1 359
    Par défaut
    Comme Pomalaix et mnitu je n'avais pas compris votre problème jusqu'à ce que je lise votre dernière réponse. C'est pourquoi il est préférable de bien poser la question et laisser les autres donner leur avis quant à la solution qu'ils (elles) envisagent. Ici, il me semble que vous êtes en présence d'une séquence qui est arrivée à son maximum alors qu'elle ne le devrait pas. Je connais trois raisons qui peuvent incrémenter anormalement une séquence

    1- un "shutdown" anormal d'une base de données

    https://hourim.wordpress.com/2013/02...hed-sequences/

    2- un nombre de rollbacks excessif

    3- une SGA(shared pool) trop stressée qui éjecte ou "age out" trop souvent des éléments à partir de la LRU et dont la séquence se trouve être parmi les éléments trop souvent éjectés de la SGA.

    Un rapport AWR correspondant à une période ou l'application est sollicitée devrait vous mettre déjà sur une première piste

    Bien Respectueusement
    Mohamed Houri
    www.hourim.wordpress.com
    Bien Respectueusement
    www.hourim.wordpress.com

    "Ce qui se conçoit bien s'énonce clairement"

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Nous sommes dans le cas numéro 2

  18. #18
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 074
    Points
    8 074
    Par défaut
    Citation Envoyé par quaife Voir le message
    ...Suis-je clair ?
    Maintenant, oui !

    Donc si l'incrémentation de la séquence n'est pas systématiquement suivie par un INSERT qui sera effectivement validé, c'est bien la séquence qu'il faut surveiller, et non les données.

    Il me semblait qu'il existait une métrique dans V$SYSSTAT, mais c'est apparemment un souvenir erroné, car je ne trouve rien.

    L'idée de l'audit (AUDIT ALL ON proprio.sequence) suggérée par Mnitu me paraît à éviter dans le contexte, car si les appels à la séquence sont massifs, la surcharge due à l'audit, tant en CPU qu'en espace de stockage, pourrait se révéler gênante.

    L'échantillonnage manuel proposé par SQLPro me semble préférable en l'espèce.
    Je vous suggère d'enregistrer également, à la même fréquence, les annulations volontaires (user rollbacks) ou automatiques lors des violations de contraintes (transaction rollbacks) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select systimestamp, name, value from v$sysstat where name in ('user rollbacks', 'transaction rollbacks');
    Attention, ces valeurs concernent la totalité de l'instance, mais devraient vous mettre la puce à l'oreille si elles sont extrêmement élevées.


    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 44
    Points : 17
    Points
    17
    Par défaut
    Great !!!

    Merci à tous pour l'aide apportée

  20. #20
    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
    Si vous avez commencé avec la valeur 100 000 000 (cent millions) et vous est arrivé (au but de combien de temps ?) à la valeur maximale 9 999 999 999 (neuf milliards neuf cent quatre-vingt-dix-neuf millions neuf cent quatre-vingt-dix-neuf milles neuf cent quatre-vingt-dix-neuf) en incrémentant avec 1 vous avez un très gros problème dans votre application. Laissez tomber la base et analyser le code!

    Désolé, mais j'ai encore un doute quand même. Vous dites que la séquence fournit des valeurs négatives mais la définition de la séquence telle que vous avez données ne le permet pas (NOCYCLE et MINVALUE). Est-ce que vous trouvez effectivement des valeur négatives dans table colonne concernée par cette séquence ?

Discussions similaires

  1. [Débutant] Fréquence d'une séquence wav
    Par Palsajicoco dans le forum Signal
    Réponses: 5
    Dernier message: 16/10/2010, 19h24
  2. afficher une séquence de fréquence des catégories
    Par mirandor dans le forum Langage
    Réponses: 3
    Dernier message: 19/05/2008, 08h23
  3. Passer une séquence en parametre
    Par djousss dans le forum CORBA
    Réponses: 2
    Dernier message: 02/12/2003, 22h39
  4. Extraire une séquence d'un fichier MPEG
    Par enzosp dans le forum DirectX
    Réponses: 2
    Dernier message: 24/02/2003, 11h30
  5. Déterminer l'adresse d'une application en mémoire
    Par Gib dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 11/06/2002, 14h27

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