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 :

valeur sequence multi-session


Sujet :

Oracle

  1. #1
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut valeur sequence multi-session
    bonjour,
    je souhaite savoir s'il existe un moyen de recuperer la valeur d'une sequence courante mais dans toutes les sessions (la valeur au niveau du serveur), pas celle en cours dans la session ?
    le currval ne convient pas .
    cordialement

  2. #2
    Expert confirmé 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
    Par défaut
    Oui, Non, peut être.
    Mais, la question est pour quoi faire ?

  3. #3
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    je veux recuperer la valeur de la sequence quelque soit la session

  4. #4
    Expert confirmé 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
    Par défaut
    Ça je l’ai déjà compris.
    Mais la question demeure : à quoi ça sert, pour quoi faire. Vous avez conscience que ce que vous demandez n’est pas habituel.

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Le but des sequences est de fournir un numéro unique à chaque fois qu'on l’interroge.
    Cordialement,
    Franck.

  6. #6
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    je veux savoir si une autre session a utilisé la sequence apres mon utilisation, qui peut durer un certain temps, et jusqu' à quelle valeur .

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous ne répondez toujours pas à la question, quelle est la finalité de votre besoin ?

  8. #8
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    pour moi c'est clair ce que je demande.
    la finalité en gros, c'est pour detecter une utilisation de la sequence par d'autres sessions clientes afin de declencher des synchronisations par la suite s'il y a decalage entre ma valeur courante et celle de la sequence (global)

  9. #9
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 462
    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 462
    Par défaut
    Citation Envoyé par vttvolant Voir le message
    pour moi c'est clair ce que je demande.
    C'est déjà un bon début ! Mais malgré vos efforts, c'est comme les collègues, je ne vois pas non plus à quoi une telle mécanique peut bien réellement servir. Je pense que vous êtes sur une fausse piste.

    Sur le plan purement technique, il existe la vue SYS.V_$SEQUENCES, qui présente les séquences ayant été appelées au moins une fois depuis le démarrage de l'instance.
    Sa colonne NEXTVALUE correspond presque directement à ce que vous cherchez : c'est la prochaine valeur qui serait générée si quelqu'un faisait un NEXTVAL. Vous n'avez plus qu'à soustraire l'incrément pour connaître la dernière valeur réellement générée.

    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
    connect / as sysdba
     
    drop sequence scott.seq;
    create sequence scott.seq start with 2 increment by 5;
     
    select sequence_owner, sequence_name, nextvalue, highwater 
    from v$_sequences
    where sequence_name='SEQ';
     
    --> Notre séquence n'apparaît pas : elle n'a pas encore été appelée
     
    select scott.seq.nextval from dual;
    --> 2
     
    select sequence_owner, sequence_name, nextvalue, highwater 
    from v$_sequences
    where sequence_name='SEQ';
     
     
    SEQUENCE_OWNER                     SEQUENCE_NAME                   NEXTVALUE  HIGHWATER
    ----------------------------------- ------------------------------ ---------- ----------
    SCOTT                               SEQ                                      7       102

  10. #10
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    Citation Envoyé par Pomalaix Voir le message
    Sur le plan purement technique, il existe la vue SYS.V_$SEQUENCES, qui présente les séquences ayant été appelées au moins une fois depuis le démarrage de l'instance.
    Sa colonne NEXTVALUE correspond presque directement à ce que vous cherchez : c'est la prochaine valeur qui serait générée si quelqu'un faisait un NEXTVAL. Vous n'avez plus qu'à soustraire l'incrément pour connaître la dernière valeur réellement générée.
    la reponse technique est exactement ce dont j'avais besoin.
    merci bien pour vos efforts

  11. #11
    Expert confirmé 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
    Par défaut
    Citation Envoyé par vttvolant Voir le message
    la reponse technique est exactement ce dont j'avais besoin.
    ...
    Mais, n’oubliez pas que vous risques certaines mauvaises surprises si vous allez l’utiliser vraiment.

  12. #12
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Attention, dès qu'un cache de séquence est mis en place, ça ne fonctionne plus (test en 11gR2 => v$sequences n'existe plus)

    Code sql : 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
     
    SQL> create sequence seq_toto increment by 12 minvalue 0 start with 0 cache 100 nocycle;
     
    SÚquence crÚÚe.
     
    SQL> select seq_toto.nextval from dual;
     
       NEXTVAL
    ----------
             0
     
    SQL> select * from DBA_SEQUENCES where SEQUENCE_NAME='SEQ_TOTO';
     
    SEQUENCE_OWNER                 SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
    ------------------------------ ------------------------------ ---------- ---------- ------------ - - ---------- -----------
    SYS                            SEQ_TOTO                                0 1,0000E+28           12 N N     100        1200

  13. #13
    Membre actif
    Homme Profil pro
    ingénieur d'étude PL/SQL
    Inscrit en
    Octobre 2002
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur d'étude PL/SQL

    Informations forums :
    Inscription : Octobre 2002
    Messages : 53
    Par défaut
    Citation Envoyé par ojo77 Voir le message
    Attention, dès qu'un cache de séquence est mis en place, ça ne fonctionne plus (test en 11gR2 => v$sequences n'existe plus)

    Code sql : 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
     
    SQL> create sequence seq_toto increment by 12 minvalue 0 start with 0 cache 100 nocycle;
     
    SÚquence crÚÚe.
     
    SQL> select seq_toto.nextval from dual;
     
       NEXTVAL
    ----------
             0
     
    SQL> select * from DBA_SEQUENCES where SEQUENCE_NAME='SEQ_TOTO';
     
    SEQUENCE_OWNER                 SEQUENCE_NAME                   MIN_VALUE  MAX_VALUE INCREMENT_BY C O CACHE_SIZE LAST_NUMBER
    ------------------------------ ------------------------------ ---------- ---------- ------------ - - ---------- -----------
    SYS                            SEQ_TOTO                                0 1,0000E+28           12 N N     100        1200
    merci pour l'info car on migre en 11G R2 dans 6 mois.
    ca complique mon eventuelle solution si le nom de la table syteme des sequences changent

  14. #14
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Citation Envoyé par vttvolant Voir le message
    merci pour l'info car on migre en 11G R2 dans 6 mois.
    ca complique mon eventuelle solution si le nom de la table syteme des sequences changent
    La table qui décrit les séquences est sys.seq$ v$sequences est une vue sur cette table (jointe avec d'autres).

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SQL> select * from sys.seq$ where OBJ#=(select object_id from dba_objects where object_name='SEQ_TOTO')
      2  /
     
          OBJ# INCREMENT$   MINVALUE   MAXVALUE     CYCLE#     ORDER$      CACHE  HIGHWATER AUDIT$                              FLAGS
    ---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- -------------------------------------- ----------
         30036         12          0 1,0000E+28          0          0        100       1200 --------------------------------                0

  15. #15
    Expert confirmé 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
    Par défaut
    Citation Envoyé par ojo77 Voir le message
    La table qui décrit les séquences est sys.seq$ v$sequences est une vue sur cette table (jointe avec d'autres).
    ...
    Mais, elle ne contient pas la valeur nextval mais seulement le HighWater
    Et ça repose la question de départ, à quoi ça doit servir et dans quelle conditions ?
    Par ailleurs, la vue dynamique (attention ce n'est pas une vue "normale") v$_sequences n'est pas documentée

  16. #16
    Expert confirmé 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
    Par défaut
    La vue existe toujours en 11gR2
    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
     
    sys@DIANA> select banner from v$version
      2  ;
     
    BANNER
    ---------------------------------------------------------------------------
     
    Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
    PL/SQL Release 11.2.0.1.0 - Production
    CORE    11.2.0.1.0      Production
    TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
    NLSRTL Version 11.2.0.1.0 - Production
     
    sys@DIANA> SELECT sequence_owner, sequence_name, nextvalue, highwater
      2  FROM v$_sequences
      3  WHERE sequence_name='SEQ';
     
    aucune ligne sélectionnée

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

Discussions similaires

  1. Remettre le Multi-sessions
    Par portu dans le forum Windows XP
    Réponses: 1
    Dernier message: 11/06/2007, 15h50
  2. Valeur dans une session automatiquement mise en addslash
    Par kvndevils dans le forum Langage
    Réponses: 6
    Dernier message: 18/12/2006, 11h25
  3. recuperer la valeur d'une session PHP dans une variable javascript
    Par pierrot10 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 07/09/2006, 19h33
  4. ajouter une valeur supplementaire à une session
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 06/04/2006, 15h53
  5. valeur maximale de session.timeout?
    Par ryan dans le forum ASP
    Réponses: 3
    Dernier message: 13/09/2004, 23h11

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