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?
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;
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
Quelques astuces:
SELECT * FROM V$SQLAREA;
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
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) ;