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 :

comment verifier les requétes avant leur execution


Sujet :

Administration Oracle

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut comment verifier les requétes avant leur execution
    bon voila mon objectif :
    je voudrais créer un fonction ou une procédure qui me permettrai de vérifier toutes les requêtes qui demandent a être exécuter sur la base de donnée.

    par exemple si un utilisateur X crée une requête qui contiens DROP, alors la requête seras bloqué et une notification me seras envoyé, je pourrais donc visualiser la requête et l'autoriser ou la réfuter.

    je suis sure que oracle ou une API d'oracle dispose déja de cette fonctionnalité mais je trouve pas ou.

    le mieux ca serais de trouver la table ou sont stocké les requéte pour effectuer leur analyse syntaxique

    il faut savoir que la base est très grande et elle est sur oracle 11g

    merci pour votre aide

  2. #2
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    Au niveau serveur, impossible.
    Au niveau applicatif, cela dépend des technos et doit être implémenté au sein de l'appli.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Au niveau des tables il faut ajouter des triggers, je ne me rappelle plus des ordres mais c'est du style on_drop ...

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    cela revient à mettre des triggers sur chaque objet et sur chaque évènement de type DML ou DDL...

    bonjour le boulot...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 43
    Points : 46
    Points
    46
    Par défaut
    Il existe aussi des triggers de base, à voir.

  6. #6
    Membre averti
    Inscrit en
    Novembre 2002
    Messages
    549
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 549
    Points : 436
    Points
    436
    Par défaut
    il te faut regarder du coté des roles et priviléges à mon avis pour tenter de trouver une esquisse de solution à ta problèmatique.

    Tu n'octrois que les priviléges objets que tu autorises à tes users.

  7. #7
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Points : 5 306
    Points
    5 306
    Par défaut
    effectivement, si c'est question de drop, la piste des privilèges est la meilleure.
    Maintenant si ca concerne d'interdire une requête en fonction de quelconque règle de gestion, les privilèges ne peuvent plus suffire.

  8. #8
    Candidat au Club
    Inscrit en
    Avril 2010
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    Merci pour vos réponses.

    J'ai bien étudié la possibilité des triggers mais comme je vous l'ai dit j'ai une base qui contient plus de trois cents tables alors j'ai vite fait de chercher ailleurs.
    Quant aux triggers sur la base ils ne sont utiles qu'au lancement de la base alors que celle ci est lancée une seule fois.

    Pour les privilèges c'est ma solution de dernier recours j'essaye de trouver d'autres solutions. Car ce que je veux c'est vérifier les requêtes et non pas interdire tous les drop.

    Sinon je crois qu'Oracle sauvegarde les requêtes pour pouvoir effectuer une analyse syntaxique avant de les exécuter.
    Ce que je cherche c'est le processus responsable de cette analyse.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Points : 426
    Points
    426
    Par défaut
    Ce qui me gène dans ce que tu veux c'est que tu donnes de gros droit aux utilisateurs: être potentiellement capable de modifier la structure de ta base.

    Mon point de vue serait :
    - ou bien les utilisateur on une connaissance de la base telle qu'ils sont surs d'eux quand il droppent des objets.
    - ou bien ce n'est pas le cas et il serait bon de trouver une interface intermédiaire pour les cadrer.

    Tu codes une interface pour les utilisateurs avec un panel d'actions restreint et tu peux dormir tranquille. Je pense que plus les "rouages" de l'application sont caché aux utilisateurs, mieux c'est.

    Le principe de "je récupère la requête et je la parse puis j'envoie un mail un l'admin qui valide ou pas", ça me parait bien bourrin et complexe .

    Après évidemment, je ne connais pas le contexte de ton appli...

  10. #10
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Citation Envoyé par hilarious Voir le message
    Quant aux triggers sur la base ils ne sont utiles qu'au lancement de la base alors que celle ci est lancée une seule fois.
    Vous avez les triggers de niveau schéma qui peuvent être une solution:
    http://download.oracle.com/docs/cd/E...s.htm#CIHGCBDG

    Citation Envoyé par hilarious Voir le message
    Sinon je crois qu'Oracle sauvegarde les requêtes pour pouvoir effectuer une analyse syntaxique avant de les exécuter.
    Ce que je cherche c'est le processus responsable de cette analyse.
    Oracle stocke les requêtes en mémoire dans la SGA dans des structures qu'on peut uniquement interroger avec SELECT via les vues V$ comme V$SQL et V$SQLAREA. Il n'est pas possible de créer des triggers sur ces vues ni de modifier ces données.

    Si vous voulez absolument vérifier les requêtes avant leur exécution ceci sera très probablement plus facile en dehors d'Oracle que dans Oracle.

Discussions similaires

  1. Evaluer des requêtes SQL avant leurs execution ?
    Par BkD35 dans le forum Requêtes
    Réponses: 2
    Dernier message: 09/04/2007, 20h20
  2. Contrôler les exécutables avant l'execution
    Par Tchetch dans le forum Sécurité
    Réponses: 12
    Dernier message: 21/12/2006, 19h01
  3. comment lister les tables et leur identifiants
    Par jclyon dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 25/07/2006, 22h03
  4. Comment tracer les requêtes ?
    Par srappaille dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 26/01/2006, 18h57
  5. Réponses: 4
    Dernier message: 13/12/2004, 20h37

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