如何查询session执行的历史sql语句

如题所述

如何知道一个session都执行过哪些SQL语句?(查看当前比较容易,历史的呢?怎么复原sql的执行场景——事务关系、执行序列、单SQL还是存储过程)

【方法一】查询v$sqltext、v$sqlarea、v$sqlstats视图
select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('schema') order by t.LAST_ACTIVE_TIME desc;
#对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解析历史,因为共享的问题这个查询可能并不能完整地反映出执行的历史。
#v$sqlstats信息保留时间比v$sql、v$sqltext、v$sqlarea长,及时SQL已经换出shared pool仍然可查到
【方法二】
联合v$active_session_history和v$sqlarea
#v$active_session_history 这个表只是个取样数据,按秒进行,只有在那一秒采样点处于on cpu或非idle等待的session统计在内。所以可能会不全,有些执行很短的SQL会忽略。这个视图无法还原完整的session历史。
#v$sqlarea中有执行过的SQL语句,但并无到session的关联信息,v$session中只关联了当前的sql,所以也不行。
查看视图:dba_hist_sqlstats、dba_hist_sqltext(历史数据)
温馨提示:内容为网友见解,仅供参考
无其他回答

如何查询session执行的历史sql语句
【方法一】查询v$sqltext、v$sqlarea、v$sqlstats视图 select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('schema') order by t.LAST_ACTIVE_TIME desc;对v$sqltext、v$sqlarea查看的是shared pool中的SQL,其时间索引是其解析历史,因为共享的问题这个查询可能并不能完整地反映出执行的历...

如何查询session执行的历史sql语句
点击右键 然后点击sql查询 就可以知道了

如何查某session当前事务中执行的所有SQL
方法一】查询v$sqltext、v$sqlarea、v$sqlstats视图 select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('schema') order by t.LAST_ACTIVE_TIME desc; #对v$sqltext、v$sqlarea查看的是shared pool中的SQL 本回答由提问者推荐

如何查找Oracle session的历史记录
首先在任务管理器里看到pid和sid的进程linux下可用top命令进行查看然后查询v$session查看起sid和#serial#字段;此时在连接v$sql的话就可以知道具体session的内容了。

怎么SQL执行历史记录
查看用户的SQL执行历史的语句如下:select * from v$sqlarea t where t.PARSING_SCHEMA_NAME in ('用户名') order by t.LAST_ACTIVE_TIME desc select * from v$sqlarea t order by t.LAST_ACTIVE_TIME desc 注意 :执行此语句等等一些相关的语句 必须具有DBA 的权限 虽然这条语句很普通 但是...

怎么找到当前session正在执行的sql
1、查看全部session中SQL:spool d:\\oracle_realtime_sqllist.txt SET LINESIZE 100 SET PAGESIZE 50000 COL USERNAME FOR A10 COL machine FOR A15 COL sql_text FOR A50 select substr(s.username,1,18) username,s.sid,s.serial#,s.machine,y.sql_text from v$session s,v$process p,v$...

如何查询SQLServer某进程当前正在执行或其最近一次执行的SQL语句
s.login_name, s.nt_domain, s.nt_user_name, s.original_login_name, c.connect_time, s.login_time,q.textFROM sys.dm_exec_connections AS c JOIN sys.dm_exec_sessions AS s ON c.session_id = s.session_id cross apply fn_get_sql(most_recent_sql_handle) qwhere...

oracle如何查看后台正在运行着的sql语句
用以下的sql可以查询出当前session中正在运行的sql信息:\\x0d\\x0a SELECT S.MODULE, SQL_TEXT, SN.OSUSER, SN.MACHINE, S.EXECUTIONS\\x0d\\x0a FROM SYS.V_$SQL S, SYS.ALL_USERS U, V$SESSION SN\\x0d\\x0a WHERE S.PARSING_USER_ID = U.USER_ID\\x0d\\x0a AND UPPER(...

怎么查看oracle刚刚执行过哪个SQL语句
最直接的办法就是打开SQL_TRACE: alter session set SQL_TRACE=true;(要DBA权限)然后到服务器上追踪文件里面查看这个session执行了哪些SQL,不过这是session级的.也可以使用系统级的. 对系统性能有影响

oracle怎么根据pid查询进程的执行的sql语句
V$process中的pid和V$session中spid二者相同,所以通过这个你可以找到这个pid对应的是哪一个session,在v$session的后面有一个字段是sql_id,这个sql_id对应v$sql中的一个sql_id,你通过这个sql_id就可以在v$sql中找到你要找的sql语句了。

相似回答