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
相关参考
1.示例一:信息:汉代的州集中于黄河中下游地区,唐代的道南北分布大体平衡。说明:汉唐间南方社会经济有了很大的发展示例二:信息:汉代州名与唐代道名有很大不同。说明;唐代“道”的划分更注重山川地理形势。此
一、怎么查看QQ的历史系统消息准备工具/材料:装有windows10的电脑一台,QQ软件。查看QQ的历史系统消息的办法如下:1、首先,我们双击电脑桌面上的QQ。2、在弹出界面中,我们输入账号和密码,然
一、谁有昆明的历史资料文化特征:悠久的历史和丰厚的文化积累,形成了当今昆明“历史悠久,古迹多;风景秀丽,名胜多;人文荟萃,名流多;资源丰富,物产多;开发较早,交往多”的鲜明特色。从战国楚将庄开滇,历经
京东登录不上去要历史收货人但是我不记得了怎么办什么申诉成功-百如果京东账号绑定了邮箱和手机,可以通过这两个找回试试。1、进入京东的登陆页面,选择页面中的忘记密码。2、进入密码找回页面,输入注册手机号,
1.通信发展的历史世界移动通信发展史移动通信可以说从无线电通信发明之日就产生了。1897年,M·G·马可尼所完成的无线通信试验就是在固定站与一艘拖船之间进行的,距离为18海里。现代移动通信技术的发展始
天津工业职业技术学院1987年,天津市第二机械局职工大学更名为天津电子仪表局职工大学;1995年,天津电子仪表局职工大学更名为天津市电子仪器公司职工大学;天津市电子仪器公司职工大学更名为天津职工电子仪
人面鱼纹盆,是出自仰韶文化最具有代表性的陕西西安半坡遗址,质地彩陶,用途作为瓮馆盖,瓮馆:瓮棺葬葬具,流行于仰韶文化-商晚期的一种葬俗,埋葬对象为夭折儿童,一般埋葬地点是当时住房的门槛下或是儿童集体墓
01历史是什么?按照教科书的说法,历史就是记载和解释一系列人类活动进程的历史事件的一门学科,是对文化的传承、积累和扩展。历史不仅是对过去时光的总结,更是对当下时代的映射,正如唐太宗所说:以史为鉴,可以
一、考核目标与要求(一)获取和解读信息1.理解试题提供的图文材料和考试要求。2.理解材料,最大限度地获取有效信息。3.对有效信息进行完整、准确、合理的解读(二)调动和运用知识1.辨别历史事物和历史解释
上网浏览信息时,浏览器会把我们在上网过程中浏览的信息保存在历史记录以及临时文件夹(\Windows\TemporaryInterFiIEs)中这样下次再访问同样信息时可以很快地达到目的地,从而提高了我