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

Connexions aux bases de données Oracle Discussion :

Comment récupérer des infos sur les connections


Sujet :

Connexions aux bases de données Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut Comment récupérer des infos sur les connections
    Bonjour,
    Je suis nouveau sur le site et dans le métier de dba.
    J'ai un souci au niveau des bases dont j'ai la gestion et j'aurais besoin de votre aide .
    Je cherche à récupérer la liste des utilisateurs d'une base ainsi que la date de la connection de chaque utilisateur. Le but final est de connaître le nombre maximum de connection différente mais simultanée à la base de donnée depuis sa création ou son redémarrage .
    J'ai cherché partout mais je n'ai pas encore trouver d'informations satisfaisantes.
    l'option d'audit de la base et l'uitlisation de trigger sur la vue v$session ne m'arrangent pas non plus.
    Ce que je recherche, c'est une solution si possible avec des requêtes .

  2. #2
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Avec les vues système (v$...), tu ne peux voir que les sessions en cours
    Pour avoir l'historique des connexions, il faut activer l'audit ou bien créer un trigger sur l'événement "after logon" qui, pour chaque connexion, insère les infos de la connexion dans une table temporaire
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  3. #3
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Si tu veux auditer ce genre d'infos il te faut en fait deux triggers et deux tables système (Appelons les MOSCOU(USERNAME,UDATEIN,UDATEOUT) et KGB(DATEINFO,NBUSERS)).

    Un trigger after logon qui met à jour la date de dernière connexion (UDATEIN) de l'utilisateur dans la table système.

    Un trigger before logoff qui met à jour la date de dernière déconnexion (UDATEOUT) de l'utilisateur dans la table système et qui en plus lance un 'insert into KGB select sysdate, count(*) from MOSCOU where UDATEIN>UDATEOUT'.

    Avec ça tu auras un historique du nombre d'utilisateurs mis à jour à chaque déconnexion.
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci de répondre au plus vite.
    Mon problème est de récupérer les users et les connexions sur la base dans le passé. Et non à partir de maintenant.
    La base n'est auditer pour le moment.
    Donc le cherche une requête pour récupérer les infos sur les connexions passées.
    merci d'avance

  5. #5
    Membre éclairé Avatar de philcero
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Septembre 2007
    Messages
    528
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2007
    Messages : 528
    Points : 773
    Points
    773
    Par défaut
    Là je voie pas, quand c'est passé, c'est passé comme dirait l'autre. Tu pourras peut-être avoir des infos sur le passif en exploitant les logs du listener mais cela demande du script et cela ne t donnera que les entrées de connexion et non les sorties.

    Peut-être plus simple voie avec l'administrateur de ta machine ou les équipes réseau si il y a un audit sur l'utilisation des ports réseau et recherche les utilisations du 1521.
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  6. #6
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    ok merci.
    Donc soit j'utilise les triggers soit je commence l'audit de la base à sa création.

  7. #7
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Sauf que pour lancer l'audit il faut redémarrer la base, ce qui n'est pas toujours faisable niveau contraintes utilisateurs
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  8. #8
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Ou sinon tu peux loguer les connexions via le listener, ça te permet de savoir quel client (IP, hostname) s'est connecté avec quel compte OS sur quelle base, mais ça ne te dit pas quel compte Oracle il a utilisé ...
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  9. #9
    Inscrit
    Inscrit en
    Février 2007
    Messages
    76
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 76
    Points : 38
    Points
    38
    Par défaut
    Salam,

    Généralement on utilise des triggers :
    exemple mouchard:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create or replace trigger mouchar
    after logon on schema 
    begin
    insert into mouchard values(user,sysdate,'connexion');
    end;
    /
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    create or replace trigger mouchar2
    before logoff on schema 
    begin
    insert into mouchard values(user,tocharsysdate,'deconnexion');
    end;
    /
    Même aussi tu pour ajoute des triggers pour connaitre quelque activité des user.
    exemple espion:
    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
     
    create or replace trigger espion_empsal
    after update or delete or insert of sal on emp
    for each row	
    begin
    if inserting then
    insert into espion values(user,sysdate,'insertion',:new.sal,null);
    end if;
    if updating then
    insert into espion values(user,sysdate,'mise à jour',:new.sal,:old.sal);
    end if;
    if deleting then
    insert into espion values(user,sysdate,'suppression',null,:old.sal);
    end if;
    end;
    /
    J’espère que j’ai répondu a tes questions

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Ou sinon tu peux loguer les connexions via le listener, ça te permet de savoir quel client (IP, hostname) s'est connecté avec quel compte OS sur quelle base, mais ça ne te dit pas quel compte Oracle il a utilisé ...
    _________________________________________________________________
    Merci pour les réponses.
    comment tu fais cette manip?

  11. #11
    Membre expérimenté Avatar de scheu
    Inscrit en
    Juin 2007
    Messages
    1 506
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 1 506
    Points : 1 734
    Points
    1 734
    Par défaut
    Citation Envoyé par dalidasoul Voir le message
    Ou sinon tu peux loguer les connexions via le listener, ça te permet de savoir quel client (IP, hostname) s'est connecté avec quel compte OS sur quelle base, mais ça ne te dit pas quel compte Oracle il a utilisé ...
    _________________________________________________________________
    Merci pour les réponses.
    comment tu fais cette manip?
    lsnrctl
    LSNRCTL> set log_directory /rep/log
    LSNRCTL> set log_file listener.log
    exit
    cat /rep/log/listener.log
    21-APR-2008 23:59:23 * (CONNECT_DATA=(SID=BDD1)(CID=(PROGRAM=perl@client1)(HOST=client1)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.1)(PORT=48675)) * establish * BDD1 * 0
    22-APR-2008 00:00:34 * (CONNECT_DATA=(SID=BDD1)(CID=(PROGRAM=sqlplus@client2)(HOST=client2)(USER=oracle))) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.0.2)(PORT=48701)) * establish * BDD1 * 0
    La théorie, c'est quand on sait tout mais que rien ne fonctionne.
    La pratique, c'est quand tout fonctionne mais que personne ne sait pourquoi.
    Ici, nous avons réuni théorie et pratique : Rien ne fonctionne ... et personne ne sait pourquoi !

    Réplication de base avec Postgresql : http://scheu.developpez.com/tutoriel.../log-shipping/

  12. #12
    Membre éprouvé Avatar de 13thFloor
    Homme Profil pro
    DBA Oracle freelance
    Inscrit en
    Janvier 2005
    Messages
    670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : DBA Oracle freelance

    Informations forums :
    Inscription : Janvier 2005
    Messages : 670
    Points : 945
    Points
    945
    Par défaut
    Si ce n'est que le nombre de cnx qui t'intéresse, les vues V$RESOURCE_LIMIT et v$license devraient t'aider.

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/05/2012, 12h45
  2. [EG] Récupérer des infos sur les requêtes SAS EG
    Par m.brahim dans le forum Outils BI
    Réponses: 2
    Dernier message: 13/10/2011, 19h25
  3. Comment insérer des infos et les afficher sur la page
    Par 14kv01 dans le forum Débuter
    Réponses: 4
    Dernier message: 17/04/2011, 23h49
  4. Réponses: 4
    Dernier message: 17/11/2006, 19h35

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