[20131031]从跟踪文件中抽取sql语句.txt

[20131031]从跟踪文件中抽取sql语句.txt

以前写过利用tkprof顺序抽取执行的sql语句
http://space.itpub.net/267265/viewspace-748041
但是递归语句没有记录下来。

今天看了一篇blog,记录如下:
--说明:我修改2处:dept那行里面的-1原文有错,应该是半角-1。
--printf "%s %s %s>>>> %s\n", stmt_count, depth_level, cursor_no, $0
--我修改为
--printf "%04s %s %s>>>> %s\n", stmt_count, depth_level, cursor_no, $0
--这样可以对齐显示。顺便贴上源代码!

http://oraclue.com/2008/10/09/script-to-extract-sql-code-from-trace-file-trimsqlsh/

SQL> oradebug setmypid
SQL> oradebug event 10046 trace name context forever, level 12
or
SQL> alter session set events '10046 trace name context forever, level 12';

trimsql.sh
cat $1 | awk 'BEGIN {
# Initialization.
parse_line = 0
stmt_count = 0
depth = '${2:-1}'
}
{
    # Performed on each row of the input file.
    if (($1 == "PARSING") && ($2 == "IN") && ($3 == "CURSOR")) {
         parse_line=1
         stmt_count++
         cursor_no = $4
         depth_level = substr($6, 5)
    }
    else if (($1 == "END") && ($2 == "OF") && ($3 == "STMT")) {
         parse_line=0
    }

    if (($1 == "ERROR") || (($1 == "PARSE") && ($2 == "ERROR"))) {
         printf "%s\n", $0
    }

    if ((parse_line == 2) && (depth >= depth_level || depth == -1)) {
         printf "%s %s %s>>>> %s\n", stmt_count, depth_level, cursor_no, $0
    }

    if (parse_line == 1) {
         parse_line = 2
    }
}'

时间: 2024-08-14 07:34:50

[20131031]从跟踪文件中抽取sql语句.txt的相关文章

[20160704]从跟踪文件抽取sql语句.txt

[20160704]从跟踪文件抽取sql语句.txt --以前写过两篇,链接如下: http://blog.itpub.net/267265/viewspace-775398/ http://blog.itpub.net/267265/viewspace-748041/ 1个利用tkprof的recodr参数,可以记录跟踪整个sql语句序列,缺点就是丢失一些递归的sql语句.另外一个利用awk脚本抽取sql语句. 今天再写一个简单一点的脚本: 1.环境: SCOTT@book> @ &r/v

[20121101]tkprof抽取sql语句.txt

[20121101]tkprof抽取sql语句.txt 有时候跟踪分析sql语句,并不是要看里面的递归的执行,或者性能问题.而是要收集跟踪命令的执行序列. 查看tkprof的帮助: Usage: tkprof tracefile outputfile [explain= ] [table= ]               [print= ] [insert= ] [sys= ] [sort= ]   table=schema.tablename   Use 'schema.tablename'

[20130226]跟踪特定IP的sql语句.txt

[20130226]跟踪特定IP的sql语句.txt 工作需要,跟踪特定IP地址发出的sql语句.可惜我们生产系统是10g的,如果是11G支持trcsess可以合并trc文件,再分析.自己做一个测试看看. http://space.itpub.net/267265/viewspace-754003 1.建立logon触发器: CREATE OR REPLACE TRIGGER SYS.on_logon_trigger    AFTER LOGON ON DATABASE DECLARE    v

0624使用10035事件跟踪无法执行的sql语句

[20160624]使用10035事件跟踪无法执行的sql语句.txt --昨天看一份awr报表,链接如下: http://www.itpub.net/thread-2061952-1-1.html --摘要如下: Top 10 Foreground Events by Total Wait Time Event                              Waits     Total Wait Time (sec)    Wait Avg(ms)  % DB time    W

通过java程序抽取日志中的sql语句

今天在翻看以前的笔记时,发现自己在很早之前写过一个java程序,能够解析日志中的sql语句. 当时使用的环境是weblogic,日志目录下总是有几十上百个日志文件,有时候排查问题的时候只需要找到对应的DML语句即可. 使用linux命令固然也可以,但是解析的时候还是比较被动,不能够正确地解析出sql语句来.比如日志中出现insert的字样可能只是日志中的一段信息,不是insert语句. 这些通过linux命令来完成还是有一定的难度,记得当时问题比较多,自己也饱受这种困扰.于是写了一个java程序

[20150527]跟踪单个sql语句.txt

[20150527]跟踪单个sql语句.txt --11G下可以使用如下脚本跟踪单个sql语句,&1 表示 sql_id.   $ cat sql_trace.sql alter system set events 'sql_trace[SQL:&1] level 12'; host sleep 300 alter system set events 'sql_trace[SQL:&1] off'; --缺点生成的文件在各个用户的trc文件中.

实例讲解ASP动态网页制作中使用SQL语句

sql|动态|网页|语句 在SQL的世界里,最最基础的操作就是SELECT 语句了.在数据库工具下直接采用SQL的时候很多人都. 在ASP中使用SQL语句之1:用Select查询 熟悉下面的操作: SELECT whatFROM whichTableWHERE cnwebjx 执行以上语句就会创建一个存放其结果的查询. 而在ASP页面文件上,你也可以采用以上的一般语法,不过情况稍微不同,ASP编程的时候,SELECT 语句的内容要作为字符串赋给一个变量: SQL = "SELECT what F

ACCESS中使用SQL语句应注意的地方及几点技巧

access|技巧|语句 ACCESS中使用SQL语句应注意的地方及几点技巧引用:Fred 以下SQL语句在ACCESS XP的查询中测试通过 建表:    Create Table Tab1 (        ID Counter,        Name string,        Age integer,        [Date] DateTime); 技巧:    自增字段用 Counter 声明.    字段名为关键字的字段用方括号[]括起来,数字作为字段名也可行. 建立索引:  

C# 怎么读取水晶报表(.rpt)中的sql语句

问题描述 如题C#怎么读取水晶报表中的sql语句呀.并且是包含子报表的我这有几百个.想整理一下其中的语句.一个个找.要疯掉的..目前连接的数据库为DB2 解决方案 解决方案二:顶起来..有人知道么.解决方案三:为什么木有人回答..米人知道么..解决方案四:没看明白解决方案五:引用3楼happy09li的回复: 没看明白 现在有一大堆的水晶报表文件.rpt格式的.想要读取里面的sql语句...如果一个个看起来太麻烦了..解决方案六:有人晓得么..解决方案七:这个问题就那么难么..解决方案八:这个有