问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-24 04:18

我来回答

2个回答

热心网友 时间:2022-04-07 17:33

除了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 procere successfully completed.

SQL> select count(*) from dba_hist_sqltext;

COUNT(*)
----------
478

SQL> select * from V$sesstat where rownum=1;

SID STATISTIC# VALUE
---------- ---------- ----------
134 0 1

SQL> execute dbms_session.session_trace_disable();
PL/SQL procere successfully completed.

$ cd $ORACLE_HOME/admin/test/ump
$ 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
--安装LOGMINER
SQL> @$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> commit;

conn / as sysdba
--切归档
SQL> alter system switch logfile;
SQL> select name,dest_id,thread#,sequence# from v$archived_log; --最后一个即为新的归档

--新建LOG MINER
SQL> execute dbms_logmnr.add_logfile(logfilename=>'/oracle/archive_10g/test/test_1_138_786808434.arc',options=>dbms_logmnr.new);
--开始miner
SQL> 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,scn,timestamp,sql_redo from v$logmnr_contents where table_name='TEST2';
SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where username='P_CHENMING';
--关闭MINER
SQL> 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执行历史的方法

热心网友 时间:2022-04-07 18:51

ctrl+e 试试
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我有个无线路由器 G11手机无法上wifi 已经按照路由说明书上步骤安装调... g11无线网显示以连接信号强但是一上网显示网络错误 拜求解 HTC G11能连接上WLAN,信号显示“极强”但上不去网? ...可是家里的能连上就是打不开网页,我的路由是上海贝尔的那种。_百度... 我的手机HTC G11 连接上WLAN,信号很好,就是无法上网 ...连上家里的无线网,但是qq却上不去,网页也打不开,等于没练上一样... G11WIFI信号格满但是打不开网页等 就生产力发展而言,丛西汉至唐朝有何表现 汉代农业的发展程度是怎么样的? 你好 酷管家密码忘了 打不开怎么办 PL/SQL 和 Oracle的题求解 ...还有就是Oracle PL/SQL程序设计,请给我一个下载地址,谢谢分享_百度... oracle pl/sql从入门到精通.pdf(丁士峰著),完整版 推荐几本oracle的PL/SQL编程方面的经典书籍? 最好是对存储过程,触发器... 在oracle中 PL/sql程序块必须包括哪几部分? oracle数据库创建一个PL/SQL函数 oracle 求PL/SQL经典入门书籍 PLSQL基础教程.pdf Oracle Database 11g PL/SQL程序设计 Oracle PL/SQL程序设计(第2版) 开通美股账户需要用到哪些资料? 美股应该怎么开户?需要我提供哪些资料? Windows time服务无法启动,时间不准确 苹果手机怎么取消云下载 苹果手机怎么才可以完全关闭所有数据不会上传到云端里? 苹果手机怎么注销云端帐户 厦门宏诚大发智能科技有限公司怎么样? 扬州宏诚智能科技有限公司怎么样? 我用的2010的ppt,怎么加入跨越整个PPT的背景音乐呢? QQ的缓存数据在哪里?我想查看原来的缓冲过的视频。 oracle 12c pl/sql程序设计终极指南 怎么样 oracle的存储过程是不是就是用plsql写的程序? oracle中如何创建函数,本人用的是pl/sql,初学者,最好能给出例子和详细... ORACLE数据库环境,pl/sql查询环境,怎么用SQL语句实现下面的要求.(回管... Oracle数据库中 编写一个PL/SQL代码块,用以接受用户输入的数字。将该... 关于鸡兔同笼的问题怎么做? 鸡兔同笼的问题有哪些? 鸡兔同笼知识点 关于“鸡兔同笼”的问题怎么解决?有什么规律?请举例说明! 关于鸡兔同笼的解决问题 有关鸡兔同笼的问题 关于鸡兔同笼的解决问题用方法 关于“鸡兔同笼”的问题( 问两个关于鸡兔同笼的问题 鸡兔同笼问题,带答案的 关于鸡兔同笼的问题,请大家帮我出几道。 在日常生活中还有哪些类似鸡兔同笼的问题? 关于鸡兔同笼问题 生活中有哪些关于鸡兔同笼的数学问题? 有关于鸡兔同笼的一个问题