vsession历史信息

Posted 历史

篇首语:人生何适不艰难,赖是胸中万斛宽。本文由小常识网(cha138.com)小编为大家整理,主要介绍了vsession历史信息相关的知识,希望对你有一定的参考价值。

vsession历史信息

如何查询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(历史数据)。

如何查找Oracle session的历史记录

1. 查看性能最差的前100sqlSELECT * FROM ( SELECT PARSING_USER_ID EXECUTIONS,SORTS,COMMAND_TYPE,DISK_READS,sql_textFROM v$sqlareaORDER BY disk_reads DESC)WHERE ROWNUM<1002.oracle 10g 查看某session的历史执行sql情况(sql采样间隔1s)oracle 10g 通过v$active_session_history查看某session(这里指定为190)的历史执行sql情况(sql采样间隔1s)select s.SAMPLE_TIME,sq.SQL_TEXT,sq.DISK_READS,sq.BUFFER_GETS,sq.CPU_TIME,sq.ROWS_PROCESSED,--sq.SQL_FULLTEXT,sq.SQL_IDfrom v$sql sq, v$active_session_history swhere s.SQL_ID = sq.SQL_IDand s.SESSION_ID = 190order by s.SAMPLE_TIME desc;。

怎么查看用户的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(历史数据)

怎么查看用户的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 trace】SQL> execute dbms_session.session_trace_enable(true,true);PL/SQL procedure successfully pleted.SQL> select count(*) from dba_hist_sqltext; COUNT(*)---------- 478SQL> select * from V$sesstat where rownum=1; SID STATISTIC# VALUE---------- ---------- ---------- 134 0 1SQL> execute dbms_session.session_trace_disable;PL/SQL procedure successfully pleted.$ cd $ORACLE_HOME/admin/test/udump$ ls -lrt$ tkprof test_ora_2195620.trc report.txt sys=no explain=no aggregate=yes$ more report.txt --这个文件包括了启停trace之间所有SQL语句的执行信息,执行计划、统计。【方法四:logminer】只包含DML与DDL语句,不能查询select语句。另外需要开启supplemental logging,默认是没有开启的。conn / as sysdba--安装LOGMINERSQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslms.sql;SQL> @$ORACLE_HOME/rdbms/admin/prvtlm.plb;--开启附加日志alter database add supplemental log data;--模拟DML操作conn p_chenming/。SQL> select * from test2;SQL> insert into test2 values(7,77);SQL> mit;conn / as sysdba--切归档SQL> alter system switch logfile;SQL> select name,dest_id,thread#,sequence# from v$archived_log; --最后一个即为新的归档--新建LOG MINERSQL> execute dbms_logmnr.add_logfile(logfilename=>\'/oracle/archive_10g/test/test_1_138_786808434.arc\',options=>dbms_logmnr.new); --开始minerSQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);--查看结果SQL> col username format a8;SQL> col sql_redo format a50 SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where table_name=\'TEST2\'; SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where username=\'P_CHENMING\'; --关闭MINERSQL> execute dbms_logmnr.end_logmnr;--关闭辅助日志SQL> alter database drop supplemental log data;

如何查看PL/SQL执行的历史

除了PL/SQL的ctrl+e的查看方法外还有如下方法:【方法一】查询v$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反应的是实例启动起来的sql执行统计,sql语句本身比v$sqltext/area完整,因为后者有可能失效换出缓存。【方法二】联合v$active_session_history和v$sqlarea#v$active_session_history 这个表只是个取样数据,按秒进行,只有在那一秒采样点处于on cpu或非idle等待的session统计在内。所以可能会不全,有些执行很短的SQL会忽略。这个视图无法还原完整的session历史。#v$sqlarea中有执行过的SQL语句,但并无到session的关联信息,v$session中只关联了当前的sql,所以也不行。从v$sqlstat可以查看到数据库启动起来的所有SQL信息,但是没有时间顺序关系、没有执行用户信息,只有执行次数与资源统计。从dba_hist_sqlstat可以看到AWR snapshot之间的SQL统计信息,与v$sqlstats比不受实例重启的影响,因为实例重启之后v$sqlstats中的信息就清除了。【方法三:session trace】SQL> execute dbms_session.session_trace_enable(true,true);PL/SQL procedure successfully pleted.SQL> select count(*) from dba_hist_sqltext; COUNT(*)---------- 478SQL> select * from V$sesstat where rownum=1; SID STATISTIC# VALUE---------- ---------- ---------- 134 0 1SQL> execute dbms_session.session_trace_disable;PL/SQL procedure successfully pleted.$ cd $ORACLE_HOME/admin/test/udump$ ls -lrt$ tkprof test_ora_2195620.trc report.txt sys=no explain=no aggregate=yes$ more report.txt --这个文件包括了启停trace之间所有SQL语句的执行信息,执行计划、统计【方法四:logminer】只包含DML与DDL语句,不能查询select语句。另外需要开启supplemental logging,默认是没有开启的。conn / as sysdba--安装LOGMINERSQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslms.sql;SQL> @$ORACLE_HOME/rdbms/admin/prvtlm.plb;--开启附加日志alter database add supplemental log data;--模拟DML操作conn p_chenming/。SQL> select * from test2;SQL> insert into test2 values(7,77);SQL> mit;conn / as sysdba--切归档SQL> alter system switch logfile;SQL> select name,dest_id,thread#,sequence# from v$archived_log; --最后一个即为新的归档--新建LOG MINERSQL> execute dbms_logmnr.add_logfile(logfilename=>\'/oracle/archive_10g/test/test_1_138_786808434.arc\',options=>dbms_logmnr.new); --开始minerSQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);--查看结果SQL> col username format a8;SQL> col sql_redo format a50 SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where table_name=\'TEST2\'; SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where username=\'P_CHENMING\'; --关闭MINERSQL> execute dbms_logmnr.end_logmnr;--关闭辅助日志SQL> alter database drop supplemental log data;【总结】查看v$sqlarea只能查看粗略的历史,因为很多SQL是共享的。查看ASH也不全,因为这是采样数据,测试的时候基本没有把SQL查询出来。查看V$SQLSTATS能看到所有执行过的sql,以及其执行统计,但是没有时序、没有用户信息。查看TRACE应该是最完整的,但需要在执行SQL前开启。查看logminer不能查看select语句,而且默认的系统没有开启supplementing log,所以能查看的内容有限。或许还有审计的方法可用,我没测试。每种方法都有各自的缺陷,看来很难有一种完备的查看SQL执行历史的方法

如何查看PL/SQL执行的历史

除了PL/SQL的ctrl+e的查看方法外还有如下方法:【方法一】查询v$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反应的是实例启动起来的sql执行统计,sql语句本身比v$sqltext/area完整,因为后者有可能失效换出缓存。【方法二】联合v$active_session_history和v$sqlarea#v$active_session_history 这个表只是个取样数据,按秒进行,只有在那一秒采样点处于on cpu或非idle等待的session统计在内。所以可能会不全,有些执行很短的SQL会忽略。这个视图无法还原完整的session历史。#v$sqlarea中有执行过的SQL语句,但并无到session的关联信息,v$session中只关联了当前的sql,所以也不行。从v$sqlstat可以查看到数据库启动起来的所有SQL信息,但是没有时间顺序关系、没有执行用户信息,只有执行次数与资源统计。从dba_hist_sqlstat可以看到AWR snapshot之间的SQL统计信息,与v$sqlstats比不受实例重启的影响,因为实例重启之后v$sqlstats中的信息就清除了。【方法三:session trace】SQL> execute dbms_session.session_trace_enable(true,true);PL/SQL procedure successfully pleted.SQL> select count(*) from dba_hist_sqltext; COUNT(*)---------- 478SQL> select * from V$sesstat where rownum=1; SID STATISTIC# VALUE---------- ---------- ---------- 134 0 1SQL> execute dbms_session.session_trace_disable;PL/SQL procedure successfully pleted.$ cd $ORACLE_HOME/admin/test/udump$ ls -lrt$ tkprof test_ora_2195620.trc report.txt sys=no explain=no aggregate=yes$ more report.txt --这个文件包括了启停trace之间所有SQL语句的执行信息,执行计划、统计【方法四:logminer】只包含DML与DDL语句,不能查询select语句。另外需要开启supplemental logging,默认是没有开启的。conn / as sysdba--安装LOGMINERSQL> @$ORACLE_HOME/rdbms/admin/dbmslmd.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslm.sql;SQL> @$ORACLE_HOME/rdbms/admin/dbmslms.sql;SQL> @$ORACLE_HOME/rdbms/admin/prvtlm.plb;--开启附加日志alter database add supplemental log data;--模拟DML操作conn p_chenming/。SQL> select * from test2;SQL> insert into test2 values(7,77);SQL> mit;conn / as sysdba--切归档SQL> alter system switch logfile;SQL> select name,dest_id,thread#,sequence# from v$archived_log; --最后一个即为新的归档--新建LOG MINERSQL> execute dbms_logmnr.add_logfile(logfilename=>\'/oracle/archive_10g/test/test_1_138_786808434.arc\',options=>dbms_logmnr.new); --开始minerSQL> execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);--查看结果SQL> col username format a8;SQL> col sql_redo format a50 SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where table_name=\'TEST2\'; SQL> select username,s,timestamp,sql_redo from v$logmnr_contents where username=\'P_CHENMING\'; --关闭MINERSQL> execute dbms_logmnr.end_logmnr;--关闭辅助日志SQL> alter database drop supplemental log data;【总结】查看v$sqlarea只能查看粗略的历史,因为很多SQL是共享的。查看ASH也不全,因为这是采样数据,测试的时候基本没有把SQL查询出来。查看V$SQLSTATS能看到所有执行过的sql,以及其执行统计,但是没有时序、没有用户信息。查看TRACE应该是最完整的,但需要在执行SQL前开启。查看logminer不能查看select语句,而且默认的系统没有开启supplementing log,所以能查看的内容有限。或许还有审计的方法可用,我没测试。每种方法都有各自的缺陷,看来很难有一种完备的查看SQL执行历史的方法

oracle lock有历史的记录吗

您好,过去的lock信息是无法查询的。

我写了几个SQL 可以在lock发生时 查询到占用session的信息。

(1).这个sql可以查到对Table进行锁定的session信息,及执行的SQL是什么。

SELECT /*+ rule */

LPAD (\' \', DECODE (l.xidusn, 0, 3, 0))

|| l.oracle_username user_name, o.owner, o.object_name,

o.object_type, s.SID, s.serial#,s.SQL_ID

FROM v$locked_object l, dba_objects o, v$session s

WHERE l.object_id = o.object_id AND l.session_id = s.SID

ORDER BY o.object_id, xidusn DESC;

select * from v$sql where sql_id=\'gfggpun2vtkqs\'

(2).这个sql可以查到xxxsession正在等待xxxsession释放锁

select \'SID \' || l1.sid ||\' is blocking \' || l2.sid blocking

from v$lock l1, v$lock l2

where l1.block =1 and l2.request > 0

and l1.id1=l2.id1

and l1.id2=l2.id2

相关参考

历史人物 余文乐个人信息,余文乐个人信息

   基本信息  姓名:余文乐  英文:ShawnYue  性别:男  生日:1981-11-13  星座:天蝎座  身高:178CM  体重:67KG  国籍:中国(香港)  职业:演员歌

历史秘闻 什么叫测绘地理信息

测绘是以计算机技术、光电技术、网络通讯技术、空间科学、信息科学为基础,以全球定位系统(GPS)、遥感(RS)、地理信息系统(GIS)为技术核心,将地面已有的特征点和界线通过测量手段获得反映地面现状的图

历史秘闻 今晚天气预报视频直播,一,多媒体信息发布系统 多媒体信息发布系统解

有人在快手直播天气预报用的什么软件用的就是天气预报软件才能直播天气预报吗?要不然哪有那么准呀。2017年2月14日的天气预报直播你是问的哪里的天气预报,下一个人生日历这样的天气预报软件,你要看的天气情

历史百科 人类认识世界的新途径——信息论、控制论诞生

人类认识世界的新途径——信息论、控制论诞生系统论、信息论、控制论作为新兴的学科,是20世纪最重要的理论成果之一。而1948年作为特殊的一年,同时记录了信息论和控制论的诞生,这看似历史的偶然,但其背后也

提取两项有关唐_宋历史变迁的信息

1.示例一:信息:汉代的州集中于黄河中下游地区,唐代的道南北分布大体平衡。说明:汉唐间南方社会经济有了很大的发展示例二:信息:汉代州名与唐代道名有很大不同。说明;唐代“道”的划分更注重山川地理形势。此

知识百科 信息误判和信息误导

信息误判和信息误导有个“好心人”在海边发现一只小海龟从沙穴里往外爬,这时过来一只老鹰要抓小海龟,“好心人”把老鹰赶走,并将小海龟护送到大海。这时一群小海龟纷纷从沙穴里钻出来,向海里爬去。不料,“好心人

知识百科 信息技术和现代通信

信息技术和现代通信信息技术是什么?广义而言,信息技术是指能充分利用与扩展人类信息器官功能的各种方法、工具与技能的总和。该定义强调的是从哲学上阐述信息技术与人的本质关系。狭义的信息技术是指利用计算机、网

怎么查看qq历史信息

一、怎么查看QQ的历史系统消息准备工具/材料:装有windows10的电脑一台,QQ软件。查看QQ的历史系统消息的办法如下:1、首先,我们双击电脑桌面上的QQ。2、在弹出界面中,我们输入账号和密码,然

知识百科 传递远古信息的使者——化石

传递远古信息的使者——化石科学家成功的奥秘,在于他们善于捕捉信息,特别是那些常被人们忽略的信息,从中发现宇宙间事物演变的规律。科学家究竟如何捕捉信息?又如何根据信息而识破事物发展的规律呢?化石可以说是

历史秘闻 逆战的版本信息

2012年12月16日始,游戏处于“公测”状态,最新的版本为“血战尸骑士”。《逆战》使用了一种类似于“资料片”的发布形式,一个资料片名称将伴随着多次更新逐步完善。当内容扩充完毕后,会更换副标题继续更新