web-dev-qa-db-fra.com

Comment savoir qui est actif et verrouille la base de données Oracle?

Au travail, nous partageons les informations d'identification Oracle entre de nombreux développeurs. Souvent, l'équipe chargée du temps exécute de lourdes requêtes ad hoc sur la base de données et cela cause beaucoup de problèmes au serveur Oracle. Nous travaillons pour résoudre ce problème de manière permanente en créant une instance de réplique en lecture seule. En attendant, je voulais savoir si je pouvais rapidement identifier qui sont tous actuellement en session en regardant l'ID utilisateur Windows et/ou les noms de machines, etc., afin que nous n'ayons pas besoin de conserver trop d'informations d'identification pour la base de données.

Est-il également formidable de savoir quel utilisateur/requête crée des problèmes pour le serveur Oracle. Par exemple, une requête a provoqué une panne d'espace temporaire sur le serveur car nous n'avions pas limité la ressource pour le compte.

3
kamoor1982

Veuillez essayer la requête ci-dessous pour voir si cela aide:

  select
   c.owner,
   c.object_name,
   c.object_type,
   b.sid,
   b.serial#,
   b.status,
   b.osuser,
   b.machine
from 
   v$locked_object a ,
   v$session b,
   dba_objects c
where
   b.sid = a.session_id
and
   a.object_id = c.object_id;
4
Emmanuel Perrin

vous devez d'abord vous connecter en tant que "sys" et exécuter cette requête

select
    c.owner,
    c.object_name,
    c.object_type,
    b.sid,
    b.serial#,
    b.status,
    b.osuser,
    b.machine
from 
    v$locked_object a,
    v$session b,
    dba_objects c
where
    b.sid = a.session_id
    and
    a.object_id = c.object_id;
0
Omar Ada Hanifi