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 :

[10g] Creer une alerte avant que la limite de session ne soit atteinte


Sujet :

Administration Oracle

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut [10g] Creer une alerte avant que la limite de session ne soit atteinte
    Bonjour,

    Je cherche un script ou au moins quelques pistes pour recevoir une alerte par mail lorsque la limite du nombre de session pour ma base est atteinte. J'accepte actuellement un maximum de 200 connexions, et j'aimerai que lorsque 180 utilisateurs sont connectés à ma base, je reçoive une alerte.

    Si vous avez des idées...

    Merci

  2. #2
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    si tu employes Enterprise Manager, tu peux créer une UDM (user defined metric), et envoyer un email lorsque la valeur critique (180) est atteinte.

  3. #3
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Ou bien un trigger de connexion, peut-être un peu moins accadémique.
    Ici un example avec une insertion dans une table, mais tu le remplacera par un envoi de mail :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    SQL> conn / as sysdba
    Connected.
    SQL> grant select on v_$session to public;
     
    Grant succeeded.
     
    SQL> conn system/manager
    Connected.
    SQL> create table nbsession (nb number, date# date);
     
    Table created.
     
    SQL> create public synonym nbsession for nbsession;
     
    Synonym created.
     
    SQL> grant insert,select on nbsession to public;
     
    Grant succeeded.
     
    SQL> 
    SQL> 
    SQL> CREATE OR REPLACE TRIGGER my_trigger AFTER LOGON ON DATABASE
      2  DECLARE
      3    var_nb number;
      4    pragma autonomous_transaction;
      5  BEGIN
      6    insert into nbsession (nb, date#) select count(*), sysdate from v$session;
      7    commit;
      8  END;
      9  /
     
    Trigger created.
     
    SQL> 
    SQL> show err
    No errors.
    SQL> 
    SQL> conn H89UCBAC/H89UCBAC
    Connected.
    SQL> select * from nbsession;
     
            NB DATE#
    ---------- ---------------
            36 14-FEB-07
     
    SQL>
    Nicolas.

  4. #4
    Futur Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je n'ai pas EM. Je vais essayer de faire un trigger, ça me semble être une bonne piste.

    Merci

  5. #5
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    personnellement ça me plait assez peu de donner l'accès à V$session à Public...

  6. #6
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Citation Envoyé par Yorglaa
    personnellement ça me plait assez peu de donner l'accès à V$session à Public...
    Ca marche aussi sans donner ce droit à tout le monde :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    SQL> conn / as sysdba
    Connected.
    SQL> revoke select on v_$session from public;
     
    Revoke succeeded.
     
    SQL> conn system/manager
    Connected.
    SQL> create public synonym nbsession for nbsession;
     
    Synonym created.
     
    SQL> grant insert,select on nbsession to public;
     
    Grant succeeded.
     
    SQL> 
    SQL> 
    SQL> CREATE OR REPLACE TRIGGER my_trigger AFTER LOGON ON DATABASE
      2  DECLARE
      3    var_nb number;
      4    pragma autonomous_transaction;
      5  BEGIN
      6    insert into nbsession (nb, date#) select count(*), sysdate from v$session;
      7    commit;
      8  END;
      9  /
     
    Trigger created.
     
    SQL> 
    SQL> show err
    No errors.
    SQL> 
    SQL> conn toto/toto
    Connected.
    SQL> select * from nbsession;
     
            NB DATE#
    ---------- ---------------
            36 14-FEB-07
     
    SQL> select * from v$session;
    select * from v$session
                  *
    ERROR at line 1:
    ORA-00942: table or view does not exist
    Nicolas.

  7. #7
    Membre éprouvé Avatar de Yorglaa
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    845
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2004
    Messages : 845
    Points : 931
    Points
    931
    Par défaut
    c'est sûr que l'info disponible reste assez restreinte, toutefois des info comme logon_time peuvent créer des problèmes entre collaborateurs...

    je prefèrerais faire une procédure qui me retourne la ou les valeurs souhaitées dans un seul schéma applicatif (qui lui à le grant select sur v$session) et ne donner que le droit d'exécuter cette procédure à Public... (modèle de droit Definer's Right).

    mais là je coupe un peu les cheveux en 4...

    EDIT :
    Ok, tu as édité ton Post pendant que j'écrivais le mien !!

  8. #8
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    J'ai éditer mon post précédent pour montrer que cela peut fonctionner même sans le droit de lire dans v$session.

    Nicolas.

    PS : ok, nos posts et commentaires se croisent.

  9. #9
    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
    Ca marche car la procédure appartient en fait à SYSTEM et que par défaut la procédure s'exécute avec les droits du propriétaire de la procédure (SYSTEM qui lui n'a pas besoin de GRANT sur v$session) et non avec les droits du l'utilisateur qui l'exécute.

  10. #10
    Membre confirmé Avatar de NGasparotto
    Inscrit en
    Janvier 2007
    Messages
    421
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 421
    Points : 603
    Points
    603
    Par défaut
    Oui en effet Pierre, je ne sais pas pourquoi j'ai mis ce grant public dans mon premier post. Corrigé par la suite.

    Nicolas.

Discussions similaires

  1. Réponses: 8
    Dernier message: 04/10/2013, 08h43
  2. Réponses: 8
    Dernier message: 31/10/2012, 17h20
  3. Réponses: 12
    Dernier message: 24/12/2010, 14h56
  4. creer une nstance apres que le produit soit installe ?!
    Par ChristopheOce dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 03/09/2007, 16h13
  5. [Conception] Creer une alerte
    Par nicotine002 dans le forum Général Java
    Réponses: 2
    Dernier message: 28/02/2006, 13h29

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