Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Connexions aux bases de données
Connexions aux bases de données Forum d'entraide sur les problèmes de connectivité 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 11/09/2008, 11h11   #1
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
Par défaut Historique des connections

bonjour,

j'aimerais savoir s'il existe un moyen de logguer les tentatives (réussie ou non) de connections à la base de donnée (ici Oracle 9i).
J'aimerais également déterminer pourquoi le serveur refuse certaines connections.

des idées?

merci.

P.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 11h18   #2
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Fichier log du listener ou AUDIT ou trigger "AFTER lOGON"
__________________
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 11h55   #3
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
le fichier
C:\oracle\oracle92\network\log\listener.log
contient toutes les tentatives de connections...

merci pour la piste.

P.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 11h59   #4
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
question subsidiaire :

est-il possible de récupérer l'historique des commandes effectuée au sein d'une session (même après que celle ci soit terminée) ?

merci

P.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 12h15   #5
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
pour ce qui est d'utiliser le trigger (bien plus pratique que le log, mais qui ne log que les connections réussi) j'ai trouvé le code suivant sur la page de
http://www.dba-oracle.com/art_builder_sec_audit.htm

Code :
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
connect sys/manager;
 
SELECT * FROM event_log
 
   CREATE TABLE
   stats$user_log
(
   user_id           varchar2(30),
   session_id           number(8),
   host              varchar2(30),
   last_program      varchar2(48),
   last_action       varchar2(32),
   last_module       varchar2(32),
   logon_day                 date,
   logon_time        varchar2(10),
   logoff_day                date,
   logoff_time       varchar2(10),
   elapsed_minutes       number(8)
)
;
 
   CREATE OR REPLACE TRIGGER
   logon_audit_trigger
AFTER LOGON ON DATABASE
BEGIN
INSERT INTO stats$user_log VALUES(
   user,
   sys_context('USERENV','SESSIONID'),
   sys_context('USERENV','HOST'),
   NULL,
   NULL,
   NULL,
   sysdate,
   to_char(sysdate, 'hh24:mi:ss'),
   NULL,
   NULL,
   NULL
);
END;
/
 
   CREATE OR REPLACE TRIGGER
   logoff_audit_trigger
BEFORE LOGOFF ON DATABASE
BEGIN
-- ***************************************************
-- Update the last action accessed
-- ***************************************************
UPDATE
stats$user_log
SET
last_action = (SELECT action FROM v$session WHERE     
sys_context('USERENV','SESSIONID') = audsid)
WHERE
sys_context('USERENV','SESSIONID') = session_id;
--***************************************************
-- Update the last program accessed
-- ***************************************************
UPDATE
stats$user_log
SET
last_program = (SELECT program FROM v$session WHERE     
sys_context('USERENV','SESSIONID') = audsid)
WHERE
sys_context('USERENV','SESSIONID') = session_id;
-- ***************************************************
-- Update the last module accessed
-- ***************************************************
UPDATE
stats$user_log
SET
last_module = (SELECT module FROM v$session WHERE     
sys_context('USERENV','SESSIONID') = audsid)
WHERE
sys_context('USERENV','SESSIONID') = session_id;
-- ***************************************************
-- Update the logoff day
-- ***************************************************
UPDATE
   stats$user_log
SET
   logoff_day = sysdate
WHERE
   sys_context('USERENV','SESSIONID') = session_id;
-- ***************************************************
-- Update the logoff time
-- ***************************************************
UPDATE
   stats$user_log
SET
   logoff_time = to_char(sysdate, 'hh24:mi:ss')
WHERE
   sys_context('USERENV','SESSIONID') = session_id;
-- ***************************************************
-- Compute the elapsed minutes
-- ***************************************************
UPDATE
stats$user_log
SET
elapsed_minutes =     
round((logoff_day - logon_day)*1440)
WHERE
sys_context('USERENV','SESSIONID') = session_id;
END;
/
et le connections sont dans :
Code :
SELECT * FROM stats$user_log
voila.

P.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 12h43   #6
Rédacteur
 
Inscription : décembre 2002
Messages : 2 401
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 401
Points : 3 307
Points : 3 307
Citation:
Envoyé par pdelorme Voir le message
...plus pratique que le log, mais qui ne log que les connections réussi
Ce n'est pas vraiment exact.
Dans le listener.log, chaque tentative de connexion est répertoriée, avec son code d'erreur (dernier élément de la ligne) qui est relatif à la couche SQL*Net uniquement.

Je veux dire par là que le log du listener s'arrête à la porte de la base : si le mot de passe de connexion est invalide, cela ne ressort pas dans le listener.log, et la connexion apparaît comme ayant réussi.
Code :
1
2
3
4
5
 
11-SEPT.-2008 12:25:38 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORA10)(CID=(PROGRAM=C:\oracle\ora102\bin\sqlplus.exe)(HOST=XXX)(USER=yyy)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=51686)) * establish * ORA10 * 12514
TNS-12514: TNS : le processus d'écoute ne connaît pas actuellement le service indiqué dans le descripteur de connexion
11-SEPT.-2008 12:26:01 * service_register * ora10 * 0
11-SEPT.-2008 12:26:56 * (CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORA10)(CID=(PROGRAM=C:\oracle\ora102\bin\sqlplus.exe)(HOST=XXX)(USER=yyy)) * (ADDRESS=(PROTOCOL=tcp)(HOST=192.168.1.10)(PORT=51688)) * establish * ORA10 * 0
La première ligne (qui se termine par 12154) indique un échec avec l'erreur 12154.
La dernière ligne (qui se termine par 0) indique simplement qu'il n'y a pas eu d'erreur au niveau SQL*Net. On en déduit généralement que la connexion s'est établie, mais c'est une conclusion hâtive : dans le cas d'espèce, j'avais fourni un mauvais mot de passe, et la conclusion avait été refusée par la base.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h06   #7
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
Citation:
Envoyé par Pomalaix Voir le message
La dernière ligne (qui se termine par 0) indique simplement qu'il n'y a pas eu d'erreur au niveau SQL*Net. On en déduit généralement que la connexion s'est établie, mais c'est une conclusion hâtive : dans le cas d'espèce, j'avais fourni un mauvais mot de passe, et la conclusion avait été refusée par la base.
effectivement, merci pour la précision car j'ai cru à tord en regardant listener.log que le client avais réussi sa connexion.

du coup, je reviens à mon problème initial...
comment faire pour identifier les tentative de login infructueuse et obtenir la raison du rejet ?

merci.
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h10   #8
Membre Expert
 
Avatar de scheu
 
Inscription : juin 2007
Messages : 1 497
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 1 497
Points : 1 485
Points : 1 485
Utilise l'audit. Regarde ce lien
__________________
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/
scheu est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/09/2008, 14h47   #9
Membre régulier
 
Inscription : mai 2007
Messages : 173
Détails du profil
Informations personnelles :
Âge : 42
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : mai 2007
Messages : 173
Points : 70
Points : 70
Citation:
Envoyé par scheu Voir le message
Utilise l'audit. Regarde ce lien
merci, le lien explique comment tracer les echec de login...
ca marche nickel...

malheureusement... dans mon cas... cela prouve que la connexion était réussi... mon problème viens donc d'ailleur...
cf mon autre post : "historique des commandes"

merci...
je peux maintenant tout savoir sur les tentatives de connections ;-)...
pdelorme est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h40.


 
 
 
 
Partenaires

Hébergement Web