[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
--這樣可以對齊顯示。順便貼上原始碼!
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
}
}'
以前寫過利用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
--這樣可以對齊顯示。順便貼上原始碼!
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
}
}'
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-775398/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20211227]抽取跟蹤檔案中的繫結變數值.txt變數
- [20200326]dbms_monitor跟蹤與SQL語句分析.txtSQL
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視.txtSQL
- Oracle執行語句跟蹤 使用sql trace實現語句追蹤OracleSQL
- [20200422]跟蹤特定sql語句以及v$open_cursor檢視(補充).txtSQL
- [20200417]跟蹤特定sql語句以及v$open_cursor檢視2.txtSQL
- [20200424]跟蹤特定sql語句以及v$open_cursor檢視(再補充).txtSQL
- [20240607]PL/SQL中sql語句的註解.txtSQL
- [20191221]12c查詢跟蹤檔案內容.txt
- [20201105]再分析sql語句.txtSQL
- [20220117]超長sql語句.txtSQL
- [20201210]sql語句優化.txtSQL優化
- SQL語句收縮日誌檔案SQL
- 如何在 Git 中取消檔案的跟蹤Git
- Git跟蹤與提交檔案Git
- .gitignore忽略跟蹤指定檔案Git
- [20220331]如何調整sql語句.txtSQL
- 註冊 sql語句+後端PHP檔案SQL後端PHP
- Java中如何解析SQL語句、格式化SQL語句、生成SQL語句?JavaSQL
- git刪除未跟蹤檔案Git
- git列出跟蹤的檔案列表Git
- git clean清除未跟蹤檔案Git
- [20190402]跟蹤vmstat.txt
- ar——建立或修改備存檔案,或是從備存檔案中抽取檔案
- [20240320]空格與sqlpus的sql語句.txtSQL
- [20200320]SQL語句優化的困惑.txtSQL優化
- git列出所有已經跟蹤檔案Git
- 轉:使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- [20210603]如何跟蹤索引分裂.txt索引
- [20181119]sql語句執行緩慢分析.txtSQL
- [20181114]一條sql語句的優化.txtSQL優化
- [20211221]分析sql語句遇到的問題.txtSQL
- [20220329]是否開發寫錯sql語句.txtSQL
- [20210923]sql語句佔用Sharable Memory分析.txtSQL
- Zoey.Dapper–Dapper擴充套件之把SQL語句放到檔案中APP套件SQL
- SQLServer進行SQL跟蹤SQLServer
- [20211009]使用bash計算sql語句的sql_id.txtSQL
- springboot 中列印 sql 語句Spring BootSQL
- JAVA 中使用 SQL 語句查詢 EXCEL 檔案資料JavaSQLExcel