Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/02/2011, 11h42   #1
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
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
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 14h33   #2
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Oui, Non, peut être.
Mais, la question est pour quoi faire ?
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 15h25   #3
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
je veux recuperer la valeur de la sequence quelque soit la session
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 16h20   #4
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
Ç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.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/02/2011, 21h53   #5
Membre Expert
 
Avatar de pachot
 
Homme Franck Pachot
DBA Oracle
Inscription : novembre 2007
Messages : 703
Détails du profil
Informations personnelles :
Nom : Homme Franck Pachot
Âge : 41
Localisation : Suisse

Informations professionnelles :
Activité : DBA Oracle
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2007
Messages : 703
Points : 1 630
Points : 1 630
Bonjour,
Le but des sequences est de fournir un numéro unique à chaque fois qu'on l’interroge.
Cordialement,
Franck.
__________________
A lire sur mon blog Oracle - Articles d'Experts des articles traduits en français de Jonathan Lewis, Tom Kyte, Doug Burns, Cary Millsap, Greg Rahn ...
pachot est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h11   #6
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
je veux savoir si une autre session a utilisé la sequence apres mon utilisation, qui peut durer un certain temps, et jusqu' à quelle valeur .
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 09h57   #7
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 459
Points : 10 459
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Vous ne répondez toujours pas à la question, quelle est la finalité de votre besoin ?
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 10h39   #8
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
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)
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 11h30   #9
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
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 :
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
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 02/02/2011, 14h08   #10
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
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
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 15h01   #11
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
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.
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 15h39   #12
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
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 :
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
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h20   #13
Invité de passage
 
Inscription : octobre 2002
Messages : 16
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 16
Points : 1
Points : 1
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 :
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
vttvolant est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h23   #14
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
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 :
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
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 16h59   #15
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
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
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 19h38   #16
Expert Confirmé Sénior
 
Avatar de mnitu
 
Homme Marius Nitu
Ingénieur développement logiciels
Inscription : octobre 2007
Messages : 3 311
Détails du profil
Informations personnelles :
Nom : Homme Marius Nitu
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 : 3 311
Points : 5 808
Points : 5 808
La vue existe toujours en 11gR2
Code :
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
mnitu est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h04.


 
 
 
 
Partenaires

Hébergement Web