web-dev-qa-db-fra.com

Comment voir la dernière instruction SQL exécutée dans la base de données Oracle 11g r2?

Je suis nouveau dans la base de données Oracle.

Quelqu'un peut-il me donner un exemple de la procédure à suivre pour voir les dernières instructions exécutées sur la base de données Oracle 11g r2?

5
teenup

Vous pouvez utiliser la requête ci-dessous pour obtenir le dernier SQL exécuté en fonction du dernier SQL actif dans la base de données.

select ltrim(sq.sql_text)
  from v$sql sq, v$session se, v$open_cursor oc
 where sq.sql_id = oc.sql_id
   and se.saddr = oc.saddr
   and se.sid = oc.sid
   and se.audsid = SYS_CONTEXT('userenv', 'sessionid')
 order by oc.LAST_SQL_ACTIVE_TIME desc;
4
psaraj12

Trouver tous les SQL où SQL est comme .... 

select h.sample_time
, u.username
, h.machine
, s.sql_text
, h.*
from dba_hist_active_sess_history h
inner join v$sql s
on s.sql_id = h.sql_id
left outer join dba_users u
on u.user_id = h.user_id
where s.sql_text like 'DELETE%'
order by h.sample_time desc;

Vous devez être connecté en tant qu'utilisateur sysdba pour ce sql

2
johnm

Quelques astuces:

  • Dans SQLplus, tapez un point-virgule + à voir et une barre oblique à exécuter à nouveau
  • Dans SQLdeveloper, utilisez F8
  • Si vous voulez dire voir les déclarations des autres utilisateurs, ce n'est pas possible par défaut.
    • Vous pouvez configurer AUDIT.
    • Vous pouvez voir certaines instructions SQL dans SELECT * FROM V$SQLAREA;
1
kubanczyk

Vous pouvez utiliser la requête ci-dessous:

SELECT program_id, program_line#, sql_text
FROM V$SQL VS , ALL_USERS AU
WHERE (executions >= 1)
AND (parsing_user_id != 0)
AND (AU.user_id(+) = VS.parsing_user_id)
AND UPPER(AU.USERNAME)  IN (UPPER('YourUser'))
ORDER BY last_active_time DESC;

si vous avez besoin de savoir si les instructions d’un objet PL/SQL ont été exécutées, utilisez ou rejoignez-les avec

select *
    from   dba_objects
    where object_id = program_id
1
cjeronimomx

Connectez-vous en tant qu'utilisateur SYS et exécutez la requête suivante

select sql_text from v$sql where first_load_time=(select max(first_load_time) from v$sql) ;
0
Kushan Menake