DB SQL Monitor v1.7.6

      Designed by Wang Zhaoguan

 

工具说明
------------------------------------------------------------------------------------
      从会话状态和等待事件的角度,了解数据库的运行情况,供DBA和开发人员分析优化做参考

      等待事件是基于“事实”和“数据”的,而非“推测”,结合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

 

注意事项
------------------------------------------------------------------------------------
      1、连接Oracle数据库,不依赖于Oracle客户端,请使用EZCONNECT方式连接(即IP/SID),例如192.168.1.1/fsdb
      2、除非特殊需要,请不要选择“KILL阻塞者”(勾选此选项,工具会杀掉阻塞源头对应的会话)
      3、点击“监控”按钮后,工具会自动根据设置规则生成日志,一般不需要干扰其工作,分析工具产生的日志即可
      4、缺省配置超出10000条记录,会自动转储为Excel文件,一般不要取消“自动转储日志”(取消此选项后如果长时间没有清空或保存日志,会造成工具内存占用累增)
      5、点击窗口关闭按钮时,工具会最小化到任务栏继续运行。如果确实要关闭跟踪,请右键任务栏工具图标,选择退出。
      6、工具为Winform程序,选择跟踪时请不要注销当前windows用户,这样会强制关闭此程序。

 

下载地址

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

 

工具截图

 

核心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节点间阻塞或系统任务阻塞造成工具报错的情况

1、Sequence contains more than one matching element

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

DB SQL Monitor 会话状态及等待事件监控工具的更多相关文章

  1. DB SQL Monitor 阻塞及等待事件监控工具

    SQL Monitor Designed By zhaoguan wang 说明------------------------------------------------------------ ...

  2. DBA常用SQL之会话与等待事件

    SELECT * FROM V$SESSION WHERE USERNAME IS NOT NULL AND STATUS = 'ACTIVE' ORDER BY LOGON_TIME, SID; 1 ...

  3. 我的工具:Db SQL Monitor

    SQL Monitor 是一款界面简洁.绿色小巧的sql活动监视器,它能够帮助用户对 SQL Server 运行进程和Job进行实时监视,您可以查看当前执行的SQL/命令并终止. 工具下载地址:htt ...

  4. SQL Server简洁查询正在运行SQL(等待事件)

    通常我们可以使用 sp_who2 我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这 ...

  5. Oracle中常见的33个等待事件小结

    在Oracle 10g中的等待事件有872个,11g中等待事件1116个. 我们可以通过v$event_name 视图来查看等待事件的相关信息     一. 等待事件的相关知识 1.1 等待事件主要可 ...

  6. ORACLE 常见等待事件

    一. 等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  7. oracle常见的等待事件说明

    转自 http://blog.itpub.net/29371470/viewspace-1063994/ 1. Buffer busy waits 从本质上讲,这个等待事件的产生仅说明了一个会话在等待 ...

  8. Oracle等待事件之等待事件详解

    一. 等待事件的相关知识:1.1 等待事件主要可以分为两类:即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候, ...

  9. 【Oracle】等待事件详细内容

    一.等待事件的相关知识 1.1 等待事件主要可以分为两类,即空闲(IDLE)等待事件和非空闲(NON-IDLE)等待事件.1). 空闲等待事件指ORACLE正等待某种工作,在诊断和优化数据库的时候,不 ...

随机推荐

  1. Java语法基础学习DayTwenty(反射机制续)

    一.Java动态代理 1.代理设计模式的原理 使用一个代理将对象包装起来, 然后用该代理对象取代原始对象. 任何对原始对象的调用都要通过代理. 代理对象决定是否以及何时将方法调用转到原始对象上. 2. ...

  2. matlab 小波工具箱

    wavemenu --- >wavelet ---->wavelet packet1-D Matlab小波工具箱的使用1 转载▼ http://blog.sina.com.cn/s/blo ...

  3. selenium3 - Tomcat and jenkins

    一.Tomcat的学习 1.tomcat 下载地址:tomcat.apache.org 2.配置tomcat环境变量: 新建系统变量 -  变量名:CATALINA_HOME    变量值:D:\TO ...

  4. 第一次scrum冲刺

     一.第一次冲刺任务          首先分工做好全局规划,然后基于规划实现全部功能,当然现在只是部分.   二.用户故事        用户进入界面    用户输入账号密码        不记得密 ...

  5. wpf binging(三) 绑定方法的返回值

    有时候我们不能绑定对象的属性或者成员,我们需要绑定一个对象的方法时 可以用 ObjectDataProvider 比如先声明一个类 含有加法 ObjectDataProvider 的简单使用 以下为综 ...

  6. HashMap(1.8)理解

    先放一个流程图了解一下HashMap的put()操作: 1.HashMap底层采用数组.链表.红黑树来实现. 2.表的长度一定是2^n(便于快速计算hash值和扩展),若初始化时指定容量不满足,则Ha ...

  7. 【Coucurrency-CountDownLatch】-20161203-0002

    简介 java异步任务相关的工具.主要用在某些线程需要等到其他线程完成某些操作后才能执行的场景. 等待线程需要显示的调用wait方法,表示线程当前挂起,需要等到countdownLatch到0才执行. ...

  8. Unity3D实现多语言切换

    项目现在需要做多语言切换部分,下面是一个基本多语言切换实现 1. 首先建立一个类来存放字符,其中包括一个静态方法来根据Key和语言类型获取对应字符 using System.Collections; ...

  9. 垃圾回收(GC Garbage collection)

    JS有自动垃圾清理机制, 如果有不需要用的对象,只需要设置对象=null即可 Var a = new object() a = null

  10. 复习string和数组

    两种实例化方式的区别 1)直接赋值(String str = "hello"):只开辟一块堆内存空间,并且会自动入池,不会产生垃圾. 2)构造方法(String str=  new ...