【oracle性能监控】- 使用Spotlight监控oracle及瓶颈分析
1 Spotlight简介
Spotlight是Quest公司出品的用于第三方性能监控的图形化工具,Spotlight相关的产品众多,如Spotight on Linux/Unix、Spotight on Windows、Spotlight on SQL Server、 Spotlight on DB2、Spotight on Oracle等,本文介绍的Spotlight就是用于oracle领域的图形化、实时性能监控诊断工具-Spotight on Oracle,它提供了直观、可视化的数据库活动展现能力,一旦某个指标出现性能瓶颈,就能可视化展现出来。因此,DBA或性能测试人员可以据此简单、快速地追查性能瓶颈的底层原因。另外,Spotlight不需要在服务器端安装代理,只需要创建一些管理对象,方便部署和应用。
2 部署Spotlight
Spotlight的使用依赖oracle客户端,部署安装前需要准备如下安装文件:
1) Oracle客户端instant client
官网下载地址:
https://www.oracle.com/technetwork/cn/database/features/instant-client/index-092699-zhs.html
2) Spotlight
官网下载地址:
https://support.quest.com/zh-cn/spotlight-on-oracle/10.3.3/download-new-releases
以上两个工具按照提示步骤一步步安装即可,详细安装步骤不再赘述。其中,oracle client需要配置系统环境变量PATH、TNS_ADMIN,其值为tnsnames.ora文件所在目录,如
PATH:D:\oracle\instantclient_11_2;
TNS_ADMIN:D:\oracle\instantclient_11_2;
3 使用Spotlight进行性能监控
使用Spotlight进行性能监控前,需要做一些简单配置,具体使用方法如下:
3.1 配置数据库连接信息
在oracle 客户端工具的安装目录下找到tnsnames.ora文件,在文件里配置需要监控数据库实例的连接信息,形式如下:
3.2 配置监控用户
在实际监控中,建议创建一个专用的监控用户来获取监控信息,点击菜单项file-Oracle User Wizard,打开用户创建向导,如图所示,然后根据提示输入DBA连接认证、创建一个新用户、输入用户名和密码(如,用户名:spotlight,密码:test123)、选择表空间,一步步完成即可。
3.3 创建数据库连接
1. 点击工具栏Connect快捷键,打开连接管理器向导,双击New connection图标,输入连接名字后,即可打开连接属性配置窗口,如下图所示:
2. 打开连接属性配置窗口后,可以看到窗口主要有三部分:ORACLE连接配置、ASM连接配置、服务器连接配置,其中后面两项是可选项,如果不需要,不要勾选即可。连接信息配置完成后,点击ok,即可看到监控主界面。
3. 监控界面介绍
当上述配置完成后,执行连接,就能看到Spotlight的监控界面,如图所示。从界面可以实时观察数据流向,同时可以直观看出系统的整体运行情况,如果系统哪方面出现性能瓶颈或问题,会报相应的警告,红色警告的级别为最严重。
注:绿色区域代表相关区域正常,×××区域代表该区域超出标准值出现警告,红色区域代表该区域出现异常。
3 Spotlight重点监控及分析
3.1 Top Sessions
点击工具栏图标,可以打开Top Sessions面板,如图所示,通过该面板可以查看当前session的情况,如哪个session占用了较多资源,以此定位数据库问题。通过点击列名可以进行排序,如点击CPU(ms/s),会根据CPU进行升序或降序排列;选择某个session,进行双击可以查看该session的详细信息,如Session Details、Session Waits、Session SQL、Session Locks等;或者在某个session上右键,可以执行kill session、trace session等操作。
在Session Infomation窗口,需要重点关注的是Session Waits、Session SQL、Session Locks,如图所示,其作用分别为:
Session Waits:找出与该session相关的等待事件;
Session SQL:找出该session相关的最近执行的sql语句;
Session Locks:与该session相关的锁信息,查看是否阻塞;
3.2 Top SQL
点击工具栏图标,可以打开Top SQL面板,如图所示,通过该面板可以查看系统中占用资源较大的sql语句,选择对应的行,可以查看SQL information详细信息。
该面板主要用于查找存在瓶颈的SQL语句,如哪些SQL耗时较长,哪些SQL磁盘读写多、缓存命中率低等,然后针对有问题的SQL进行优化,通过可以先从语法上优化,再从业务逻辑上优化。
3.3 Activity
点击工具栏图标,可以打开Activity面板,如图所示,该面板以直方图的形式展示了IO、活动session、等待事件等信息,通过其他tab页面可以查看具体的waits事件、Locks等信息,该界面数据一般用于辅助分析。
3.4 I/O和配置内存
点击工具栏图标,可以分别打开I/O和配置内存面板,如图所示,通过这两个面板可以查看session、数据文件的IO情况、数据库内存配置及使用情况等,一般用于辅助分析。
在I/O界面,通过关心的是哪个表空间或数据文件的物理读写较高,哪个session执行的SQL导致这些IO异常。从该界面可以定位到那个session的IO异常,然后结合Top Session界面的SQL进行分析、定位。当然,也可能是表结构设计导致的IO问题,此时结合Segment的IO的使用情况进行分析。
在配置内存界面,需要关注SGA利用率、shared pool、buffer cache的利用率和命中率,其中在shared pool中主要查看library 命中的情况,在buffer cache主要关注命中率,如果命中利率太低,可能存在问题。
4 其他资源
关于python学习、分享、交流,笔者开通了微信公众号【小蟒社区】,感兴趣的朋友可以关注下,欢迎加入,建立属于我们自己的小圈子,一起学python。