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 :

Script shell pour connaitre le nombre de connection sur un serveur oracle


Sujet :

Administration Oracle

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Script shell pour connaitre le nombre de connection sur un serveur oracle
    Salut,
    je suis en stage architecture reseau, je ne connais pas grand chose en programmation. Ma question est la suivante:
    Comment connaître le nombre de connection sur un serveur oracle.
    En fait, je dois écrire un scripte shell qui me permettrai de remonter ces informations sous forme de graphique en sur se servant de cacti:
    cacti est un logiciel de supervion.
    merci.

  2. #2
    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
    Ca sert à rien de faire une requête Oracle, cherche juste avec un 'netstat -a' tous les éléments du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <mon ip>.<port du listener> <autre ip>.<un port> x x x x ESTABLISHED
    En gros, sur une de mes machines :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ netstat -na | grep 1521 | grep -i established
    10.200.81.86.1521    10.200.81.78.44684   66608      0 66608      0 ESTABLISHED
    ...etc...
    Avec un 'wc' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ netstat -na | grep 1521 | grep -i established | wc -l
          83
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  3. #3
    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
    La partie SQL de la réponse est en partie dans la FAQ.

    Citation Envoyé par philcero
    avec un 'netstat -a' tous les éléments du type :
    S'il n'y a que des connexions distantes, oui. Mais il peut y avoir des connexions locales qui n'utilisent pas Oracle Net mais le protocole IPC.

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S'il n'y a que des connexions distantes, oui. Mais il peut y avoir des connexions locales qui n'utilisent pas Oracle Net mais le protocole IPC.
    Il parle de surveillance, donc j'en déduis qu'il s'agit de connexions clientes sur un réseau classique...
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    175
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 175
    Points : 180
    Points
    180
    Par défaut
    pas forcément, on peut avoir un besoin de superviser le nbre de personnes connectés pour diverses raisons (sécurité, licensing, etc.)

  6. #6
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    et pourquoi pas regarder dans v$sessions ?

  7. #7
    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
    et pourquoi pas regarder dans v$sessions ?
    Pour la simple et unique raison qu'un script SHELL automatisé ne doit JAMAIS se connecter à une base pour faire des requêtes. Si il le fait cela veut dire qu'il y a possibilité pour un flux réseau (Qui arrive sur ce compte) de faire un JUMP vers une base de données et roule ma poule, adieu la babase si c'est un pirate.
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  8. #8
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    alors regarder le nombre de process Oracle DEDICATED s'il a la chance de ne pas être en MTS

  9. #9
    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
    Pour compléter ma réponse c'est l'une des raisons qui ont poussés les éditeurs à créer des flux protégés pour piloter et monitorer leurs bases à distance (OEMAGENT).

    Il faut bien garder à l'esprit, quand on gère une base, que celle-ci doit être hermétique à tout flux extérieur qui ne passerait pas par son LISTENER (En environnement critique, on crypte également son flux).
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Juin 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut à tous,
    Si on regarde au niveau process, on peut compter le nombre de sessions dédiées si on compte les process oracleSID
    Cela qui sont par IPC ont "(DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))"
    et celles par oracle*net :
    "(LOCAL=NO)"
    Rem : Sur ma machine AIX, à cause de la redirection de port si on fait le compte par netstat, il faudra diviser le nombre par 2.

    Halifa :Si tu décides de passer quand même par un user oracle , n'oublies pas de créer un compte avec des droits restreints.

    @+

  11. #11
    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
    Je dirais même plus créé un compte qui ne puise pas avoir de login (shell=/bin/false).

    Au moins ce sera un début de sécurisation...
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  12. #12
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 43
    Points : 38
    Points
    38
    Par défaut
    pardon...

    Citation Envoyé par orafrance Voir le message
    et pourquoi pas regarder dans v$sessions ?
    Citation Envoyé par philcero Voir le message
    Pour la simple et unique raison qu'un script SHELL automatisé ne doit JAMAIS se connecter à une base pour faire des requêtes.
    Moi je pense qu'ilest possible d'utiliser v$session (et non v$sessions) dans unscript quiest soumis au serveur oracle comme une tache...

  13. #13
    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
    Le problème n'est pas technique, il est philosophique. Si tu as la responsabilité d'une base, tu as également la responsabilité de qui y entre. Donc il faut limiter les entrées au compte maître de la base qui lui doit être blindé comme personne et ensuite tous les autres accès ne doivent être que via SQL*Net.

    Pourquoi ?

    Si tu fais un compte dans un coin qui a la possibilité de lancer un script sur ta base c'est que tu réponds au moins à une des deux possibilités suivantes :
    • Tu as un compte et un mot de passe en clair dans un fichier texte visible de ce compte, et bien souvent de plein d'autres car les gens lancent du SQL*Plus avec compte et mot de passe sur la ligne de commande (ps -aef et zou je voie tout).
    • Ton compte fait partie du groupe assimilé DBA de ton OS et peut se connecter à ta base quand il veut.
    Dans les deux cas tu as tout faux car même si ta solution semble propre, tu offres là une voir royale pour une attaque...

    Alors ensuite on peut dire "Oui, mais statistiquement, j'ai une chance sur un milliard...". Grosse erreur, non pas sur le chiffre, on te donne la responsabilité d'une base c'est équivalent à te donner les clefs du coffre dans une banque ni plus ni moins. Si je laisse les clefs sur le comptoir est-ce normal ?
    Philippe CEROU,

    Architecte Systèmes & Bases de données.

  14. #14
    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 Eclairez nos lanternes
    J'ai un peu du mal à vous suivre:

    Citation Envoyé par philcero Voir le message
    Pour la simple et unique raison qu'un script SHELL automatisé ne doit JAMAIS se connecter à une base pour faire des requêtes. Si il le fait cela veut dire qu'il y a possibilité pour un flux réseau (Qui arrive sur ce compte) de faire un JUMP vers une base de données et roule ma poule, adieu la babase si c'est un pirate.
    Il faut bien garder à l'esprit, quand on gère une base, que celle-ci doit être hermétique à tout flux extérieur qui ne passerait pas par son LISTENER (En environnement critique, on crypte également son flux).
    Cela veut dire que toute connexion Oracle Net peut être piratée dès qu'on utilise toujours le même identifiant/mot de passe sauf si Oracle Net ou TCP/IP encrypte la communication ? Il me semble que le listener n'est utilisé que pour l'établissement de la connexion TCP/IP; après la client est connecté directement à son processus dédié (ou partagé le cas échéant). D'un autre côté, il me semble aussi que le listener est obligatoire dès qu'il y a connexion par Oracle Net.

    Je n'arrive pas à comprendre ce qui différencie le problème sécurité que vous évoquez dans ce cas spécifique avec le problème général de sécurité Oracle Net.

    Si vous avez des liens sur des documents plus détaillés, ils sont les bienvenus.

  15. #15
    Expert éminent sénior
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    Citation Envoyé par philcero Voir le message
    Si tu fais un compte dans un coin qui a la possibilité de lancer un script sur ta base c'est que tu réponds au moins à une des deux possibilités suivantes :
    • Tu as un compte et un mot de passe en clair dans un fichier texte visible de ce compte, et bien souvent de plein d'autres car les gens lancent du SQL*Plus avec compte et mot de passe sur la ligne de commande (ps -aef et zou je voie tout).
    • Ton compte fait partie du groupe assimilé DBA de ton OS et peut se connecter à ta base quand il veut.
    Dans les deux cas tu as tout faux car même si ta solution semble propre, tu offres là une voir royale pour une attaque...
    ou tu as un compte identifié par l'OS et a donc le droit de se connecter comme l'utilisateur OS a le droit de faire un PS

    Si la sécurité est bien géré (pas d'user SYSDBA et pas utiliser SYSTEM) alors je ne vois pas se qui interdit de lancer des requêtes sur la base même pour du monitoring Sinon, tu t'interdis tous les outils de monitoring du marché qui se connecte à la base C'est à dire tous sauf data grid control

  16. #16
    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
    J'ai moi aussi dans ma boîte des batches lancés via crontab unix, soit par un compte du groupe DBA (sans mot de passe), soit par compte unix identifié par l'OS sur la base
    Personnellement, je ne vois pas non plus où est le mal niveau sécurité ...
    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/

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 18
    Points : 21
    Points
    21
    Par défaut
    Il existe une troisième possibilité ; le wallet.
    Le wallet contient, pour un TNS donné, un password. Ce password est donc utilisable sans être connu de l'utilisateur qui établit la connexion.
    Ainsi, on profite des deux avantages :
    • limitation des privilèges : pas besoin d'avoir un privilège DBA ou SYSDBA
    • on ne se limite pas à une authentification OS

Discussions similaires

  1. Script shell pour compter le nombre de mots "ok"
    Par smtp2014 dans le forum Shell et commandes GNU
    Réponses: 24
    Dernier message: 11/03/2014, 19h11
  2. Réponses: 18
    Dernier message: 21/11/2012, 13h04
  3. [XL-2007] MACRO pour compter le nombre des fichiers sur le serveur FTP
    Par kinkichin dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 04/07/2011, 18h09
  4. Réponses: 2
    Dernier message: 15/06/2009, 18h41
  5. Script VBS pour connaitre taille d'une image
    Par fredoh dans le forum Windows
    Réponses: 2
    Dernier message: 24/02/2006, 14h27

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