How can I see the last SQL statement executed in Oracle database 11g r2?

不问归期 提交于 2019-12-05 06:57:21

You can use the below query to get the last sql executed based on last sql which was active in database

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;
johnm

Find all sql where sql is like ....

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;

You need to be connected as sysdba user for this sql

You can use the below query:

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;

if you need to know the statements of an PL/SQL object were executed then use or join with

select *
    from   dba_objects
    where object_id = program_id

A couple of hints:

  • In SQLplus, type a semicolon+ to see, and slash to execute again
  • In SQLdeveloper, use F8
  • If you mean see other users' statements then it's not possible by default.
    • You can configure AUDIT.
    • You can see some SQL statements in SELECT * FROM V$SQLAREA;
Kushan Menake

Connect as SYS user and execute the following query

select sql_text from v$sql where first_load_time=(select max(first_load_time) from v$sql) ;
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!