Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur 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 02/10/2007, 16h48   #1
Membre habitué
 
Avatar de ilalaina
 
Homme Ilalaina Rasoloarison
Inscription : mai 2007
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme Ilalaina Rasoloarison
Localisation : Madagascar

Informations forums :
Inscription : mai 2007
Messages : 330
Points : 129
Points : 129
Envoyer un message via Yahoo à ilalaina Envoyer un message via Skype™ à ilalaina
Par défaut Verrou empechant même les select

Bonjour à tous.
Je voudrais savoir s'il existe un sorte de verrou qui permet d'interdire même la consultation d'une table via select.
Merci d'avance.
ilalaina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/10/2007, 17h06   #2
Membre du Club
 
Inscription : août 2005
Messages : 68
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 68
Points : 68
Points : 68
Code :
REVOKE SELECT ON matable ?
Peux-tu préciser le contexte ?
Il s'agit d'empêcher le select sur une table de manière permanente ou temporaire ?
A qui ?
xavi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 07h49   #3
Membre habitué
 
Avatar de ilalaina
 
Homme Ilalaina Rasoloarison
Inscription : mai 2007
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme Ilalaina Rasoloarison
Localisation : Madagascar

Informations forums :
Inscription : mai 2007
Messages : 330
Points : 129
Points : 129
Envoyer un message via Yahoo à ilalaina Envoyer un message via Skype™ à ilalaina
Il s'agit d'un verrou temporaire. Je voudrais bloquer l'accès à une table (pour tout le monde sauf l'utilisateur courant) pendant l'execution d'une requête et ensuite la libérer quand la reqête sera terminée.
ilalaina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 08h24   #4
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Il n'y a pas de moyen simple d'empêcher des SELECT sur une table avec Oracle car par défaut le SELECT (sans clause FOR UPDATE) ne verrouille aucune ligne dans une table. L'instruction LOCK TABLE n'empêche pas les SELECT concurrents.

Pourquoi voulez-vous interdire des SELECT concurrents sur une table ?
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 14h18   #5
Membre habitué
 
Avatar de ilalaina
 
Homme Ilalaina Rasoloarison
Inscription : mai 2007
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme Ilalaina Rasoloarison
Localisation : Madagascar

Informations forums :
Inscription : mai 2007
Messages : 330
Points : 129
Points : 129
Envoyer un message via Yahoo à ilalaina Envoyer un message via Skype™ à ilalaina
Citation:
Pourquoi voulez-vous interdire des SELECT concurrents sur une table ?
J'utilise une requête qui teste si un lot de travail est libre (un lot est libre si tous les champs VERROU des lots associés à celui_ci est à 0).
Ensuite on attribue ce lot à l'utilisateur qui a fait le SELECT.
Le problème est que si deux utilisateurs effectuent des SELECT en même temps le lot va paraître libre aussi bien pour l'un que pour l'autre, et cela pourra causer des désordres.
ilalaina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 14h43   #6
Membre du Club
 
Inscription : septembre 2005
Messages : 94
Détails du profil
Informations forums :
Inscription : septembre 2005
Messages : 94
Points : 67
Points : 67
gérer avec un système SELECT FOR UPDATE...s'il ne marche pas pour l'utilisateur lambda c'est qu'un premier est en train de le lire..

2 lecteurs en meme temps? nécéssairement un des 2 passera avant l'autre (au timestamp près)

si le select marche, on peut dire qu'il est pdeudo-libre.. quand la sélection (ou pas) est fait ...oracle libère la ligne avec commit ou rollback

ça pourrait pas marcher?
lca94 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 14h58   #7
Membre actif
 
Avatar de Loyd1974
 
Inscription : août 2007
Messages : 176
Détails du profil
Informations forums :
Inscription : août 2007
Messages : 176
Points : 172
Points : 172
tu peux utiliser l'option NOWAIT du select for update. Mais il faut que tous les select qui accèdent à ton slot et qui sont susceptible de se l'approprier fasse de même.
Ensuite, il faut juste gérer l'exception pour passer sur le slot suivant par exemple
Loyd1974 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 15h05   #8
Membre habitué
 
Avatar de ilalaina
 
Homme Ilalaina Rasoloarison
Inscription : mai 2007
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme Ilalaina Rasoloarison
Localisation : Madagascar

Informations forums :
Inscription : mai 2007
Messages : 330
Points : 129
Points : 129
Envoyer un message via Yahoo à ilalaina Envoyer un message via Skype™ à ilalaina
Merci pour vos réponses, je vais essayer et je vous dirai la suite.
ilalaina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 15h16   #9
Membre habitué
 
Avatar de ilalaina
 
Homme Ilalaina Rasoloarison
Inscription : mai 2007
Messages : 330
Détails du profil
Informations personnelles :
Nom : Homme Ilalaina Rasoloarison
Localisation : Madagascar

Informations forums :
Inscription : mai 2007
Messages : 330
Points : 129
Points : 129
Envoyer un message via Yahoo à ilalaina Envoyer un message via Skype™ à ilalaina
SELECT ... FOR UPDATE empèche les modifications pour les autres utilisateurs mais ne les empèche pas de voir le contenu de la table. Or ce que je veux c'est justement de les empecher de consulter le contenu de la table.
ilalaina est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 15h30   #10
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Non, vous ne voulez pas empêcher les utilisateurs de lire les données mais vous voulez les empêcher de mettre à jour la même donnée en même temps: le SELECT FOR UPDATE est la bonne solution à condition que tout le code applicatif qui va mettre à jour la donnée en question utilise cette clause.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 15h45   #11
Rédacteur
 
Homme Salim
Développeur et DBA Oracle
Inscription : octobre 2006
Messages : 872
Détails du profil
Informations personnelles :
Nom : Homme Salim
Localisation : Canada

Informations professionnelles :
Activité : Développeur et DBA Oracle

Informations forums :
Inscription : octobre 2006
Messages : 872
Points : 1 100
Points : 1 100
Salut,

Tu peux cacher les données avec la sécurité granulaire.
salim11 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2007, 15h55   #12
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Le problème sous-jacent est sans doute celui du "lost update". Voir la longue discussion en anglais à ce sujet sur AskTom et en particulier comment Forms traite ce cas.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h33.


 
 
 
 
Partenaires

Hébergement Web