天天看點

關于抓取session資訊的一個腳本

關于session的診斷,可以基于動态性能視圖,ash,awr..

自己也寫過一些簡單的腳本,在平時的工作中也能夠完成一些基本的工作。今天在看taner分享的腳本snapper的時候,讓自己眼前一亮,也發現自己存在着很多的不足的地方。

可以從腳本中看到他孜孜不倦的分享着自己的心得,而且自己也寫了一些更加深入的一些工具集來解析oracle的技術細節。

腳本的功能很多,林林總總下來代碼有近2000多行,功能點很多,自己看文檔也簡單嘗試了幾個。發現還不錯。可以在平時的工作中也基于自己的需求來做一些修改。

簡單示範幾個腳本的使用例子。

比如我想多次抓取session的細節,可以通過如下的參數來輔助,下面的例子就是示範抓取所有的session信心,沒5秒抓取一次,一共抓取2次

SQL>  @snapper ash=sid+event+wait_class+sql_id,ash1=sql_id 5 2 all

Sampling SID all with interval 5 seconds, taking 2 snapshots...

------------------------------------------------------------------------------------------

Active% |    SID | EVENT                               | WAIT_CLASS      | SQL_ID

     2% |      6 | control file parallel write         | System I/O      |

-------------------------

Active% | SQL_ID

     2% |

--  End of ASH snap 1, end=2014-09-27 07:39:44, seconds=5, samples_taken=41

--  End of ASH snap 2, end=2014-09-27 07:39:49, seconds=5, samples_taken=45

PL/SQL procedure successfully completed.

下面還有一些作者提供的例子。

 @snapper ash,stats 1 1 515

--      (Output one 1-second snapshot of session 515 using dbms_output and exit

--       Wait, gv$sesstat and gv$sess_time_model statistics are reported by default

--       Starting from V3 the ASH style session activity report is shown as well)

--

--      @snapper stats,gather=w 1 1 515

--       only Wait event statistics are reported, no ASH)

--      @snapper ash,gather=st 1 1 515

--       only gv$sesstat and gv$sess_Time_model statistics are gathered + ASH)

--      @snapper trace,ash,gather=stw,pagesize=0 10 90 117,210,313

--      (Write 90 10-second snapshots into tracefile for session IDs 117,210,313

--       all statistics are reported, do not print any headers)

--      @snapper trace,ash 900 999999999 "select sid from v$session"

--      (Take a snapshot of ALL sessions every 15 minutes and write the output to trace,

--       loop (almost) forever )

--      @snapper out,trace 300 12 "select sid from v$session where username='APPS'"

--      (Take 12 5-minute snapshots of all sessions belonging to APPS user, write

關于抓取session資訊的一個腳本