Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec 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 04/08/2011, 15h49   #1
Invité de passage
 
Ingénieur développement logiciels
Inscription : juin 2011
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2011
Messages : 26
Points : 2
Points : 2
Par défaut Sequence / transaction

Bonjour,

j'ai une question pour les "Oracliens".

Si on utilise un bloc de code utilisant une transaction, et dans laquelle on fait appel à un SEQ.nextval, est ce que le fait de rollbacker annule également l'incrémentation de la séquence ?

Je présume que non parce que cela pourrait vite foutre la merde, mais cela sous entendrait que si on a toute une suite de transaction rollbackée on aura alors de gros "trous" au niveau séquence ?


On me dit également que lors de la création d'une séquence on peut paramétrer un "cache" pour anticiper une certaine génération de la séquence et que si on stoppe et redémarre la base on pourrait se retrouver avec des sauts de séquence.... ca parle à qqun ca ?

Merci.
Nalonna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h01   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Citation:
Envoyé par Nalonna Voir le message
Je présume que non parce que cela pourrait vite foutre la merde, mais cela sous entendrait que si on a toute une suite de transaction rollbackée on aura alors de gros "trous" au niveau séquence ?
Tu présumes bien et en effet, ça fait des trous

Citation:
Envoyé par Nalonna Voir le message
On me dit également que lors de la création d'une séquence on peut paramétrer un "cache" pour anticiper une certaine génération de la séquence et que si on stoppe et redémarre la base on pourrait se retrouver avec des sauts de séquence.... ca parle à qqun ca ?
En effet, le cache est vidé à l'arrêt de la base donc tous les numéros cachés sont perdus
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 16h53   #3
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Citation:
Envoyé par orafrance Voir le message
En effet, le cache est vidé à l'arrêt de la base donc tous les numéros cachés sont perdus
Et aussi si tu fais un flush de la sql_area, ou si la base réutilise la zone allouée à la séquence dans shared_pool

Oracle dit : La séquence est faite pour un n° unique, en aucun cas pour avoir une suite sans trou.
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2011, 17h21   #4
Membre expérimenté
 
Homme Mohamed Houri
Inscription : mars 2010
Messages : 286
Détails du profil
Informations personnelles :
Nom : Homme Mohamed Houri
Localisation : France

Informations forums :
Inscription : mars 2010
Messages : 286
Points : 563
Points : 563
Citation:
Envoyé par orafrance Voir le message
Tu présumes bien et en effet, ça fait des trous



En effet, le cache est vidé à l'arrêt de la base donc tous les numéros cachés sont perdus
Je ne l'ai jamais vu à l'oeuvre ni l'ai expérimenté, mais il me semble que pour un arrêt normal d'une base de données(non RAC) les valeurs en cours de la séquence sont réecrites de nouveau dans la base de données si bien qu'aucune valeur ne sera perdue.

La perte de valeurs d'une séquence représente généralement une conséquence de la "library cache" qui est sur-utilisée si bien qu'elle doit "flucher" de temps à autres les objects ''cachés'' en utilisant la LRU pour cela.

Bien à vous

Mohamed Houri
Mohamed.Houri est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 17h58   #5
Invité de passage
 
Ingénieur développement logiciels
Inscription : juin 2011
Messages : 26
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Ingénieur développement logiciels

Informations forums :
Inscription : juin 2011
Messages : 26
Points : 2
Points : 2
Oula cela devient trop technique pour moi. Je suis juste en mode user personnellement.

Mais la base de mon client (dont on a hérité) est tellement mal foutue, et des gens soit disant "support" y viennent ajouter des tuples sans même utiliser les séquences.
Bref au final, y a une fonction de la mise à jour des séquences faite en java pour déterminer le prochain élément acceptable par la séquence ()

Il est clair qu'une séquence n'est pas là pour éviter d'avoir des trous, mais là l'utilisation semble tellement intensive qu'ils auraient réussi à se retrouver avec des ID négatifs !

Merci à vous pour vos réponses
Nalonna est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2011, 19h25   #6
Rédacteur
 
Inscription : décembre 2002
Messages : 2 387
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 387
Points : 3 265
Points : 3 265
Citation:
Envoyé par Mohamed.Houri Voir le message
Je ne l'ai jamais vu à l'oeuvre ni l'ai expérimenté, mais il me semble que pour un arrêt normal d'une base de données(non RAC) les valeurs en cours de la séquence sont réecrites de nouveau dans la base de données si bien qu'aucune valeur ne sera perdue.
Bien vu ! Je viens de le vérifier sur une 10.2, il ne me reste plus qu'à oublier les vieilles vérités que j'avais en tête...
__________________
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 00
Vieux 17/08/2011, 10h52   #7
Nouveau Membre du Club
 
Homme
Administrateur de base de données
Inscription : mars 2011
Messages : 15
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : mars 2011
Messages : 15
Points : 33
Points : 33
Par défaut cache de séquence

bonjour, j'ajouterais qu'à la création d'une séquence on précise le nombre de numéro "stocké" en mémoire prévisionnellement, l'option NOCACHE interdit à Oracle de pré-réserver les numéros, cela permet de diminuer le nb de trou en cas de vidage mémoire.
Sinon fonctionnellement pour la gestion de clef sans "trou", j'ai déjà expérimenté la chose en passant par une variable globale de package faisant office de numéro de séquence, pilotée par des fonctions de ce package.

salutations.
t.merle est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/08/2011, 11h09   #8
Invité de passage
 
Homme
Étudiant
Inscription : août 2011
Messages : 1
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : août 2011
Messages : 1
Points : 0
Points : 0
salut les amis, je travaille sur PL/SQL , et ma question est la suivante : existe t-il un package comme (UTL_FILE) qui permet de générer un fichier .txt dans le serveur client et non dans celui d'oracle , merci d'avance
hilbert est déconnecté   Envoyer un message privé Réponse avec citation 01
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h39.


 
 
 
 
Partenaires

Hébergement Web