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读取时,行数翻倍的状况

相关文章
相关标签/搜索