Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Administration
Administration Forum d'entraide sur l'administration du serveur 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 31/03/2008, 13h08   #1
Membre habitué
 
Inscription : février 2007
Messages : 216
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : février 2007
Messages : 216
Points : 115
Points : 115
Par défaut ecriture de v$sqlarea dans une table

Bonjour;
Je voudrais ecrire toutes les requetes SQL qui s'executent dans ma base de données de l'utilisateur user1 dans une table qui s'appelle tab_user1.
Je veux que le contenu de la vue v$sqlarea soit ecrit dans cette table.
Autrement dit je veux créer un trigger sur v$sqlarea a chaque fois qu'une ligne est ajouté qui concerne l'utilisateur user1 qu'elle soit ecrite dans tab_user1.
merci d'avance.
elharet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 14h15   #2
Membre habitué
 
Inscription : février 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2006
Messages : 139
Points : 126
Points : 126
Bonjour,

pourquoi ne pas utiliser les traces Oracle?
Si c'est pour une application, tu peux faire un trigger qui active les traces sur le logon du user.
v$sqlarea contient les requetes de tous les users.
Sinon il reste le lourd perfstat ou awr pour le log des requetes consommatrices.

Cdt
kervoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 17h04   #3
Membre habitué
 
Inscription : février 2007
Messages : 216
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : février 2007
Messages : 216
Points : 115
Points : 115
Je ne veux pas utiliser le trace d'oracle;
v$sqlarea peux me donner les requetes de l'utilisateur user1, si je fais une jointure avec dba_users.
Code :
1
2
3
4
5
6
7
8
9
 
SELECT a.sqltext
a.buffer_gets,
a.disk_reads,
a.executions,
a.sorts,
a.address
FROM   v$sqlarea a, dba_users u
WHERE u.user_id=a.parsing_user_id AND u.username='user1'
merci pour ta réponse.
elharet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/03/2008, 21h27   #4
Membre habitué
 
Inscription : février 2006
Messages : 139
Détails du profil
Informations personnelles :
Âge : 37
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : février 2006
Messages : 139
Points : 126
Points : 126
vu les infos recherchées, problème de consommation, il te faudrait utiliser perfstat ou awr.
Il s'agit de mechanismes très puissants d'Oracle pour traquer les requêtes consommatrices et sans impacter la production. Tu peux ensuite faire des tas de stats par user, BF, DR, module,...

Sinon concernant le trigger envisagé, il faudrait le positionner sur les tables systeme ce qui est à proscrire car tu pourrais bloquer la base.

cdt
kervoaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 10h53   #5
Membre éclairé
 
Avatar de boussafi
 
Homme
Ingénieur développement logiciels
Inscription : septembre 2007
Messages : 342
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Algérie

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Industrie

Informations forums :
Inscription : septembre 2007
Messages : 342
Points : 397
Points : 397
Envoyer un message via Yahoo à boussafi Envoyer un message via Skype™ à boussafi
bonjour
n'oubliez pas qu'il exist une autre vue v$sql
bonne chance
boussafi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 16h23   #6
Membre habitué
 
Inscription : février 2007
Messages : 216
Détails du profil
Informations personnelles :
Localisation : Maroc

Informations forums :
Inscription : février 2007
Messages : 216
Points : 115
Points : 115
Comment je peux savoir les tables systèmes que la vue v$sqlarea lit pour avoir les infos.
elharet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/04/2008, 16h49   #7
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
Code :
SELECT text FROM dba_views WHERE VIEW_NAME = 'V_$SQLAREA';
Tu va etre vachement avancé
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/04/2008, 17h00   #8
Membre du Club
 
Avatar de lmartin
 
Inscription : avril 2008
Messages : 61
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 61
Points : 61
Points : 61
Le plus simple est d'installer les statspack pour avoir ce type d'information.
Ce module n'est pas payant et fournit même des conseils de configuration de ton instance. Si ton but est bien de faire du tuning.

L'idée est de scheduler des snapshots, tu peux ensuite sortir un rapport entre 2 snapshots (pas forcément successives).
lmartin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h50.


 
 
 
 
Partenaires

Hébergement Web