一步一步教你學習如何玩轉跟蹤檔案
1.獲取跟蹤檔案路徑:
oracle資料庫獲取trace檔案方法:
10g
1.show parameter background_dump_dest
2.show parameter background_dump_dest
11
1.show parameter diag
2.select value from v$diag_info where name = 'Default Trace File';
10g和11g 通用
1.select name, value from v$parameter where name in ('user_dump_dest','background_dump_dest');
獲取當前trace檔案的指令碼:
select c.value || '/' || d.instance_name || '_ora_' ||
a.spid || '.trc' ||
case when e.value is not null then '_'||e.value end trace
from v$process a, v$session b, v$parameter c, v$instance d, v$parameter e
where a.addr = b.paddr
and b.audsid = userenv('sessionid')
and c.name = 'user_dump_dest'
and e.name = 'tracefile_identifier'
2.如何生成跟蹤檔案
2.1 跟蹤級別:
玩轉跟蹤不瞭解跟蹤級別是不行的,下面介紹Oracle可採用的跟蹤介面:
Level 0 = No statistics generated
Level 1 = standard trace output including parsing, executes and fetches plus more.
Level 2 = Same as level 1.
Level 4 = Same as level 1 but includes bind information
Level 8 = Same as level 1 but includes wait's information
Level 12 = Same as level 1 but includes binds and waits
2.2 跟蹤當前會話:
alter session set sql_trace=true;
執行相關sql
oracle資料庫獲取trace檔案方法:
10g
1.show parameter background_dump_dest
2.show parameter background_dump_dest
11
1.show parameter diag
2.select value from v$diag_info where name = 'Default Trace File';
10g和11g 通用
1.select name, value from v$parameter where name in ('user_dump_dest','background_dump_dest');
獲取當前trace檔案的指令碼:
select c.value || '/' || d.instance_name || '_ora_' ||
a.spid || '.trc' ||
case when e.value is not null then '_'||e.value end trace
from v$process a, v$session b, v$parameter c, v$instance d, v$parameter e
where a.addr = b.paddr
and b.audsid = userenv('sessionid')
and c.name = 'user_dump_dest'
and e.name = 'tracefile_identifier'
2.如何生成跟蹤檔案
2.1 跟蹤級別:
玩轉跟蹤不瞭解跟蹤級別是不行的,下面介紹Oracle可採用的跟蹤介面:
Level 0 = No statistics generated
Level 1 = standard trace output including parsing, executes and fetches plus more.
Level 2 = Same as level 1.
Level 4 = Same as level 1 but includes bind information
Level 8 = Same as level 1 but includes wait's information
Level 12 = Same as level 1 but includes binds and waits
2.2 跟蹤當前會話:
alter session set sql_trace=true;
執行相關sql
alter session set sql_trace=false;
alter session set events '10046 trace name context forever,level 1';
執行相關sql
alter session set events '10046 trace name context off';
2.3 獲取個人的sid,serail#
select sid, serial# from v$session where sid = (select sid from v$mystat where rownum=1);
獲取系統級別的會話:
select s.sid,s.serial#,s.username,s.osuser
from v$session s,v$process p
where s.paddr=p.addr;
3.使用oracledebug 跟蹤會話
3.1 使用ORADEBUG跟蹤當前會話
oradebug只能跟蹤SYS使用者的當前SESSION,如下方式:
sys@MAA> oradebug setmypid
sys@MAA> oradebug unlimit
sys@MAA> oradebug event 10046 trace name context forever, level 12
sys@MAA> exec our code
sys@MAA> oradebug event 10046 trace name context off
sys@MAA> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/maa/maa/trace/maa_ora_17641.trc
3.2 使用ORADEBUG跟蹤其他會話
透過oradebug非常方便地跟蹤其他會話,如下方式:
luocs@MAA> select pid, spid from v$process p, v$session s where p.addr = s.paddr and s.sid=(select sid from v$mystat where rownum=1);
PID SPID
---------- ------------------------------------------------
25 17678
指定跟蹤SESSION的SPID(OS process)
sys@MAA> oradebug setospid 17678
Oracle pid: 25, Unix process pid: 17678, image: oracle@maa3.luocs.com (TNS V1-V3)
或者指定跟蹤SESSION的PID(Oracle process ID)
sys@MAA> oradebug setorapid 25
Oracle pid: 25, Unix process pid: 17678, image: oracle@maa3.luocs.com (TNS V1-V3)
sys@MAA> oradebug unlimit
sys@MAA> oradebug event 10053 trace name context forever, level 1
sys@MAA> exec our code
sys@MAA> oradebug event 10053 trace name context off
sys@MAA> oradebug tracefile_name
4.使用autotrace 跟蹤當前會話:
@MAA> set autotrace on
@MAA> set autotrace on explain
@MAA> set autotrace on statistics
@MAA> set autotrace traceonly
@MAA> set autotrace traceonly explain
@MAA> set autotrace traceonly explain statistics
@MAA> set autotrace off
我喜歡使用縮略方式,比如
@MAA> set autot trace exp stat
5.使用10053跟蹤會話:
MAA> alter session set events '10053 trace name context forever, level 1';
MAA> alter session set events '10053 trace name context off';
MAA> oradebug event 10053 trace name context forever, level 1
MAA> oradebug event 10053 trace name context off
alter session set events '10046 trace name context forever,level 1';
執行相關sql
alter session set events '10046 trace name context off';
2.3 獲取個人的sid,serail#
select sid, serial# from v$session where sid = (select sid from v$mystat where rownum=1);
獲取系統級別的會話:
select s.sid,s.serial#,s.username,s.osuser
from v$session s,v$process p
where s.paddr=p.addr;
3.使用oracledebug 跟蹤會話
3.1 使用ORADEBUG跟蹤當前會話
oradebug只能跟蹤SYS使用者的當前SESSION,如下方式:
sys@MAA> oradebug setmypid
sys@MAA> oradebug unlimit
sys@MAA> oradebug event 10046 trace name context forever, level 12
sys@MAA> exec our code
sys@MAA> oradebug event 10046 trace name context off
sys@MAA> oradebug tracefile_name
/u01/app/oracle/diag/rdbms/maa/maa/trace/maa_ora_17641.trc
3.2 使用ORADEBUG跟蹤其他會話
透過oradebug非常方便地跟蹤其他會話,如下方式:
luocs@MAA> select pid, spid from v$process p, v$session s where p.addr = s.paddr and s.sid=(select sid from v$mystat where rownum=1);
PID SPID
---------- ------------------------------------------------
25 17678
指定跟蹤SESSION的SPID(OS process)
sys@MAA> oradebug setospid 17678
Oracle pid: 25, Unix process pid: 17678, image: oracle@maa3.luocs.com (TNS V1-V3)
或者指定跟蹤SESSION的PID(Oracle process ID)
sys@MAA> oradebug setorapid 25
Oracle pid: 25, Unix process pid: 17678, image: oracle@maa3.luocs.com (TNS V1-V3)
sys@MAA> oradebug unlimit
sys@MAA> oradebug event 10053 trace name context forever, level 1
sys@MAA> exec our code
sys@MAA> oradebug event 10053 trace name context off
sys@MAA> oradebug tracefile_name
4.使用autotrace 跟蹤當前會話:
@MAA> set autotrace on
@MAA> set autotrace on explain
@MAA> set autotrace on statistics
@MAA> set autotrace traceonly
@MAA> set autotrace traceonly explain
@MAA> set autotrace traceonly explain statistics
@MAA> set autotrace off
我喜歡使用縮略方式,比如
@MAA> set autot trace exp stat
5.使用10053跟蹤會話:
MAA> alter session set events '10053 trace name context forever, level 1';
MAA> alter session set events '10053 trace name context off';
MAA> oradebug event 10053 trace name context forever, level 1
MAA> oradebug event 10053 trace name context off
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25462274/viewspace-2120620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一步一步教你使用Eclipse如何建立Swing專案(一)Eclipse
- 轉:使用 Tkprof 分析 ORACLE 跟蹤檔案Oracle
- 一步一步教你如何用Python做詞雲Python
- Midjourney:一步一步教你如何使用 AI 繪畫 MJAI
- 一步一步教你寫kubernetes sidecarIDE
- 一步一步教你 https 抓包HTTP
- 如何在 Git 中取消檔案的跟蹤Git
- Git跟蹤與提交檔案Git
- .gitignore忽略跟蹤指定檔案Git
- 一步一步教你線上免費訓練機器學習模型(啟用GPU和TPU)機器學習模型GPU
- Android教你一步一步從學習貝塞爾曲線到實現波浪進度條Android
- git刪除未跟蹤檔案Git
- git列出跟蹤的檔案列表Git
- git clean清除未跟蹤檔案Git
- 一步步學習如何用Lerna
- 一步一步教你封裝最新版的Dio封裝
- 一步一步學spring bootSpring Boot
- 如何一步一步配置webpackWeb
- git列出所有已經跟蹤檔案Git
- 教你如何玩轉力扣力扣
- 從爬蟲到機器學習預測,我是如何一步一步做到的?爬蟲機器學習
- git的跟蹤分支和遠端跟蹤分支學習筆記Git筆記
- 手挽手帶你學React:四檔(下篇)一步一步學會react-reduxReactRedux
- 從零開始學React:四檔(下篇)一步一步學會react-reduxReactRedux
- 【測試平臺開發】一步步教你vue-cli建立專案學習教程Vue
- idou老師教你學Istio 22 : 如何用istio實現呼叫鏈跟蹤
- 一步一步將PlantUML類圖匯出為自定義格式的XMI檔案
- 進一步學習WDK驅動程式的SOURCES檔案、WMI驅動程式的mof檔案和wmidata.h標頭檔案
- 一步一步教你實現iOS音訊頻譜動畫(二)iOS音訊動畫
- 一步一步教你實現iOS音訊頻譜動畫(一)iOS音訊動畫
- Android自定義View教你一步一步實現即刻點贊效果AndroidView
- iOS--手把手教你一步一步完成搖骰子動畫iOS動畫
- 一步一步學習大資料:Hadoop 生態系統與場景大資料Hadoop
- 通過Dapr實現一個簡單的基於.net的微服務電商系統(八)——一步一步教你如何擼Dapr之鏈路追蹤微服務
- 如何分配和跟蹤專案工作量?
- 破解class檔案的第一步:深入理解JAVA Class檔案Java
- 一步一步搭建 springboot-2.1.3+dubbo-2.7.1 專案Spring Boot
- 資料中心如何一步一步接納NVMe?
- 學會這些,教你如何玩轉linux作業系統Linux作業系統