DB SQL Monitor 會話狀態及等待事件監控工具

DB SQL Monitor v1.7.6sql

      Designed by Wang Zhaoguan數據庫

 

工具說明
------------------------------------------------------------------------------------
      從會話狀態和等待事件的角度,瞭解數據庫的運行狀況,供DBA和開發人員分析優化作參考windows

      等待事件是基於「事實」和「數據」的,而非「推測」,結合Oracle AWR、ASH(Sqlserver DMV、Windows計數器),咱們能夠把性能分析變爲可能的方法論。服務器

 

依賴要求
------------------------------------------------------------------------------------
      WinXP/Vista/Win7/Win8/Win10/Windows Server(2003/2008/2012/2016)
      Microsoft .NET Framework 4.0
      SQL Server 2005 或更高版本 ServerAdmin 或 SysAdmin 角色,例如sa帳戶
      Oracle 10g 或更高版本 Select Any Dictionary 和 Alter System 權限,例如system app

 

注意事項
------------------------------------------------------------------------------------
      一、鏈接Oracle數據庫,不依賴於Oracle客戶端,請使用EZCONNECT方式鏈接(即IP/SID),例如192.168.1.1/fsdb
      二、除非特殊須要,請不要選擇「KILL阻塞者」(勾選此選項,工具會殺掉阻塞源頭對應的會話)
      三、點擊「監控」按鈕後,工具會自動根據設置規則生成日誌,通常不須要干擾其工做,分析工具產生的日誌便可
      四、缺省配置超出10000條記錄,會自動轉儲爲Excel文件,通常不要取消「自動轉儲日誌」(取消此選項後若是長時間沒有清空或保存日誌,會形成工具內存佔用累增)
      五、點擊窗口關閉按鈕時,工具會最小化到任務欄繼續運行。若是確實要關閉跟蹤,請右鍵任務欄工具圖標,選擇退出。
      六、工具爲Winform程序,選擇跟蹤時請不要註銷當前windows用戶,這樣會強制關閉此程序。工具

 

下載地址sqlserver

      http://files.cnblogs.com/files/zhaoguan_wang/DBSQLMonitor_v1.7.6.zip性能

 

工具截圖測試

image

image

image

 

核心SQL以下: 優化

--Oracle 
SELECT t.SID, t.SERIAL#, t.STATUS, t.EVENT, t.BLOCKING_SESSION, t.BLOCKING_SESSION_STATUS, t.USERNAME, t.MACHINE, t.PROGRAM, t.PROCESS
     , t.SECONDS_IN_WAIT, t.P1TEXT, t.P2TEXT, t.P3TEXT, t.P1, t.P2, t.P3
     , NVL(s1.SQL_ID, s2.SQL_ID) AS SQL_ID, NVL(s1.SQL_TEXT, s2.SQL_TEXT) AS SQL_TEXT
FROM V$SESSION t
    LEFT JOIN V$SQL s1 ON t.SQL_ID = s1.SQL_ID AND t.SQL_CHILD_NUMBER = s1.CHILD_NUMBER
    LEFT JOIN V$SQL s2 ON t.PREV_SQL_ID = s2.SQL_ID AND t.PREV_CHILD_NUMBER = s2.CHILD_NUMBER
WHERE t.TYPE = 'USER' AND t.SID != USERENV('SID')

--Sqlserver
select t.spid, t.kpid, t.blocked, t.status, t.lastwaittype, t.waitresource, t.waittime/1000 AS waittime, t.last_batch
     , DB_NAME(t.dbid) DbName, t.loginame, t.program_name, t.hostname, t.hostprocess, t.cmd, dc.text
from master.sys.sysprocesses t 
    outer apply master.sys.dm_exec_sql_text(t.sql_handle) dc
where t.spid >= 50 and t.spid != @@SPID

 

更新日誌

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

Updated 2017.04.05 v1.7.6
增長「中止時間」,缺省爲當前日期後14天
將清空功能改成列表控件的右鍵操做
列表控件中選擇若干行數據時,能夠按Ctrl+C複製選中的內容到剪貼板
保存日誌時,按照日期建立日誌目錄文件夾,觸發轉儲的日誌條數調整爲10000

 

Updated 2017.03.23 v1.7.5
增長remarks列,Oracle數據庫對應的是sql_id信息,sqlserver數據庫對應的cmd
數據庫鏈接信息界面禁用輸入法,避免每次打開或修改時因當前輸入爲中文等須要更改輸入法

 

Updated 2017.03.21 v1.7.4

修復登陸時檢查Oracle帳戶權限不許確的問題。
要求的Oracle用戶權限爲select any Dictionary 和 alter system


Updated 2017.02.24 v1.7.3
修復因並行執行、RAC節點間阻塞或系統任務阻塞形成工具報錯的狀況
一、Sequence contains more than one matching element
二、Sequence contains no matching element

Updated 2017.02.20 v1.7.0
修復另存爲Excel 時,若是文本內容過長,出現超出32K限制的錯誤

Updated 2017.02.15 v1.6.5
修復監控阻塞信息時,輸出了全部會話的列表
自動轉儲的最大行數更改成5000,減小工具的內存佔用

Updated 2017.01.20 v1.6
增長等待事件和對應的資源參數,應用服務器、應用進程名稱和進程ID
保存爲Excel文件方便查看、篩選、排序

 

Created 2016.04.08 v1.5
SQL阻塞監控
阻塞時間的自定義設置,包含會話狀態和SQL腳本信息
支持Oracle數據庫(不依賴於Oracle客戶端)
自動生成監控的文本日誌

 

 

Demo擴展

====================================================================================

擴展數據庫平臺的實現
      實現SQLMonitor.SPI定義的服務接口
      將新的實現註冊到[setting.xml]文件: 增長一個 name="XX數據庫平臺" type="擴展實現類的完整命名, 擴展實現類所在的程序集"

擴展多語言支持
      增長新的Resource資源
      將新的語言註冊到[setting.xml]文件: 增長一個 name="xx語種區域" display="語言顯示名稱"

下載

      http://files.cnblogs.com/files/zhaoguan_wang/SQLMonitorV1.9.zip

 

TestSQL

      測試Oracle數據庫的連通性,當前運行環境下不一樣鏈接方式的響應性能差別       System.Data.OracleClient .NET Framework爲Oracle提供的缺省ADO.NET實現       Oracle.DataAccess.Client Oracle提供的官方ADO.NET適配(ODP.NET)       Oracle.ManagedDataAccess Oracle提供的全託管ADO.NET適配,不依賴於Oracle的非託管客戶端       Devart.Data.Oracle 第三方開發商Devart提供的全託管提供的全託管ADO.NET適配       測試微軟缺省實現的bug,例如偶發的兩條數據,轉換到DataSet/DataTable或DataReader讀取時,行數翻倍的狀況

相關文章
相關標籤/搜索