• Oratop工具——实时数据库性能监控工具


    在任何系统优化过程中,“80/20原则”是我们一定要关注的问题。简单的说,就是我们系统80%的性能问题、现象,都是有少数几个甚至一个问题造成的。这就需要我们面对复杂的系统性能问题的时候,要学会“拨开云雾、蛇打七寸”。

     

    落实在Oracle优化过程,同样如此。从10g开始,我们开始频繁接受“Top-xxx”的概念,无论是从OEMOracle Enterprise Manager)还是借助AWR事后报告库,解决主要矛盾,发掘主要Top Events就成了我们日常工作不可缺少的部分。

     

    实际工作中,对Top的发掘和Oracle动态信息的收集,很多时候还是有点力不从心和滞后之感强烈。Oracle官方的客户服务网站MOS,经常有一些有用的小工具,提供给我们使用。本篇中,我们主要来介绍下Oratop工具的特点和使用。

     

    1Oratop工具简述

     

    Oratop源自MOS的一篇文章和工具链接(oratop - utility for near real-time monitoring of databases, RAC and Single Instance [ID 1500864.1])。从名称上看,Oratop最大特点是支持实时轻量级监控。在Oracle 12cEM Express之前,OEM还是一个重体积的组件。相比之下,oratop完全适合那些想使用数据库实时监控功能,但是又不愿意启动OEM的用户需要。

     

    从功能上看,Oratop主要有三大特点:

     

    ü  监控当前的数据库活动;

    ü  监控数据库性能;

    ü  识别当前阻塞会话和瓶颈会话;

     

    目前,Oratop是在MOS上免费下载,只有Linux版本,分别有32位和64位两个版本。

     

    2、软件安装初启动

     

    从网站上下载软件之后,是一个命名为oratop.v13.2.1_X8664的可执行程序,注意要区分32位版和64位版。

     

    首先,判断适合的Linux版本,并且创建程序目录。Oratop是一个典型的“绿色”软件,不需要安装,只需要给一个运行目录即可。

     

    --64位操作系统

    [root@localhost ~]# uname -a

    Linux localhost.localdomain 2.6.32-279.el6.x86_64 #1 SMP Wed Jun 13 18:24:36 EDT 2012 x86_64 x86_64 x86_64 GNU/Linux

     

     

    [root@localhost ~]# mkdir /oratop

    [root@localhost ~]# cd /oratop

    [root@localhost /]# cd oratop/

    [root@localhost oratop]# ls -l

    total 0

    [root@localhost oratop]#

     

     

    进行目录的权限转换和程序拷贝。为了方便执行,我们最好还要进行一下重命名工作。

     

     

    [root@localhost /]# chown -R oracle:oinstall /oratop

    [root@localhost /]# su - oracle

    [oracle@localhost ~]$ cd /oratop/

    [oracle@localhost oratop]$ ls -l

    total 92

    -rw-r--r--. 1 oracle oinstall 93640 May 17 13:39 oratop.v13.2.1_X8664

     

    [root@localhost oratop]# ls -l

    total 92

    -rw-r--r--. 1 root root 93640 May 17 13:39 oratop.v13.2.1_X8664

     

    [oracle@localhost oratop]$ mv oratop.v13.2.1_X8664 oratop

    [oracle@localhost oratop]$ ls -l

    total 92

    -rw-r--r--. 1 oracle oinstall 93640 May 17 13:39 oratop

     

     

    注意:使用oratop在环境变量上需要一些额外的配置内容。主要是对于变量LD_LIBRARY_PATH的配置。我们一般都不会去配置这目录,但是oratop要求必须进行配置。

     

    配置方法是修改根目录上的.bash_profile文件。

     

     

    [oracle@localhost ~]$ vi .bash_profile

     

     

    export ORACLE_BASE=/u01/app/oracle

    export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1/

    export ORACLE_SID=isis2db

     

    export PATH=$PATH:$ORACLE_HOME/bin

     

    (篇幅原因,掠过部分内容……

    export LD_LIBRARY_PATH=$ORACLE_HOME/lib

    ".bash_profile" 36L, 901C written                            

    [oracle@localhost ~]$

     

     

    [oracle@localhost ~]$ env | grep LIB

    LD_LIBRARY_PATH=/u01/app/oracle/product/11.2.0/dbhome_1//lib

     

     

    下面我们来试着执行以下命令。

     

     

    [oracle@localhost oratop]$ ./oratop -i 10 / as sysdba

     

    oratop: Release 13.2.1 Production on Fri May 17 13:43:34 2013

     

    Copyright (c) 2011, Oracle.  All rights reserved.

     

    Processing ...(等待片刻……

     

     

    参数-i表示数据刷新间隔,也就是多长实际更新一下页面数据信息。/ as sysdba表示登录本机连接。注意,这也就意味着我们可以远程使用oratop连接到其他服务器上面去。更进一步说,虽然oratop只有Linux版本程序,但是通过远程连接的方法,他是可以连接到任何版本操作系统上的Oracle服务器的。

     

    出现字符界面显示。

     

     

     

    oratop 1:  131 isis 13:44:24 up  0.0h,  1 ins,   3G mt,  41 sn,  3 us,   0% db

    ID %CU HLD MBPS IORL %FR PGAU ASC ASI ASW ASP   AAS USN  TPS UCPS SSRT DBC DBW

     1  12   0   71   0m  18 161M   1   0   0   0   0.1  41    0   24   3m  94   6

                                                                                 

    EVENT     (Cumulative)      AVG: TOT WAITS  TIME(s)  AVG_MS PCT  WAIT_CLASS  

    DB CPU                                       112868          75              

    SQL*Net message from dblink       16794060    14852     0.9  10  Network     

    SQL*Net more data from clien        193150     8260    42.8   5  Network     

    log file parallel write            1025524     7308     7.1   5  System I/O  

    enq: TX - row lock contentio          1289     7248  5622.9   5  Application 

                                                                                 

    ID   SID  SPID USR PROG  PGA OPN SQLID/BLOCKER  E/T STATUS STE WAIT_EVENT  W/T

     

     

    3、初识Oratop

     

    从字符界面上看,oratop结果集合分为四个部分,分别为:Header SectionDatabase SectionDB Events SectionProcesses Section

     

    Header Section中,包括了连接数据库的总体信息,包括运行多长时间、实例个数(for RAC)、内存大小和数据库占据CPU时间的比例。

     

    Database Section中,包括了各个实例(for RAC)下,每个实例的基本参数和复杂信息。如每个实例活动会话个数、每秒的事务数量和内存使用情况等。

     

    DB Events Section是从Wait Event角度进行评估。评估排在头几位的等待事件信息,默认情况下,这个度量是累计的,也就是从启动数据库到当前时间。我们可以切换到当前时间模式下。

     

    Processes Section是记录下处在BlockContention状态的连接会话信息。当数据库出现有会话被阻塞的情况,就会记录在这个Section里面。

     

    4、丰富的帮助系统

     

    Oratop结果显示中,大量使用的简写和缩写,这在一定程度上阻碍我们阅读结果。为此,Oratop开发人员设计了完备功能的帮助体系。

     

    在使用-h参数,或者运行过程中按下键盘h,就可以切换到帮助界面。

     

    使用h按键

     

     

    oratop: Release 13.2.1

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

    Dynamic Keys

            d : Toggle Top 5 Wait Events between Real-Time and Cumulative

            f : Toggle between short & long format (for header & Process sections)

            i : Interval Delay time (requires value in seconds)

     

    Nomenclature:

            [M] : Signify 1 minute averaged value, else, Real Time

            [F] : denote a Forground (FG) value, else, Background (BG)

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

    Acronym Help Menu:

     

    HEADER Section    .. [1]

    DATABASE Section  .. [2]

    DB EVENTS Section .. [3]

    PROCESSES Section .. [4]

    Quit Help         .. (Q|q)

     

    Enter selection Number:

     

     

    动态按键(Dynamic Keys)实际上就是在运行过程中,可以动态实时点击,查看不同维度结果的案件。

     

    笔者比较喜欢d按键,这样可以从累计Event信息到实时Event信息,把握最新的数据库等待时间状态。

     

     

     

    (d) –使用了d动态按键

    oratop 1:  376 NBST 14:31:22 up  5.1d,  1 ins,   2G mt, 135 sn,  7 us,   4% db

    ID %CU HLD MBPS IORL %FR PGAU ASC ASI ASW ASP   AAS USN  TPS UCPS SSRT DBC DBW

     1   2   0    0   0m  17 394M   1   0   0   0   0.0 135    4   71 297u  85  15

                                                                                  

    EVENT     (Real-Time)       AVG: TOT WAITS  TIME(s)  AVG_MS PCT  WAIT_CLASS  

    DB CPU                                         1867         100              

                                                                                  

    ID   SID  SPID USR PROG  PGA OPN SQLID/BLOCKER  E/T STATUS STE WAIT_EVENT  W/T

     

     

    另一部分帮助就是显示对四个section的解释,解释的非常详细,值得读者学习。篇幅原因,这里只显示一份结果。

     

     

    Section 1- HEADER (Global information)

       "oratop"  : program name

             : instance_id to which oratop is connected to

            : oratop's SID

         : DB_UNIQUE_NAME

       [M]: Time of most recent stats (hh24:mi:ss)

             : Database Uptime

            : Total number of instance(s)

             : Total DB memory cluster wide (SGA+PGA)

          [F]: User sessions (idle & active)

          [F]: Number of distinct users (idle & active)

       <%db>     : %database busy, 0% indicate idle db

     

     

    5、复杂应用

     

    Oratop的本质和优势在于轻量型和实时。一个很小的程序,可以在自身消耗较小的情况下发现问题。

     

    Block and ContentioProcess Section部分重点问题。阻塞是数据库内部资源征用的一种结果,及时发现BlockingContention是非常重要的。

     

    下面片段是笔者模拟的一个两个会话同时修改一行数据,之后一个会话被阻塞时,oratop监控到的情况。

     

     

    锁定等待

                                                                                

    ID   SID  SPID USR PROG  PGA OPN SQLID/BLOCKER  E/T STATUS STE WAIT_EVENT  W/T

     1   187 25971 SYS DEDI 908k DEL 1:193:25968    20s ACTIVE WAI enq: TX -   20s

     

     

    在信息中,等待Session信息、SQL信息和等待事件信息都是我们进行进一步调优的依据。

     

    另外,我们可以在一台Linux上安装oratop,监控连接另一台远程数据库服务器,比如AIX系统。

     

    首先,我们需要建立本地连接名。

     

     

    [oracle@localhost oratop]$ netca

     

    Oracle Net Services Configuration:

    Default local naming configuration complete.

        Created net service name: nbstest

    Oracle Net Services configuration successful. The exit code is 0

    [oracle@localhost oratop]$ tnsping nbstest

     

    TNS Ping Utility for Linux: Version 11.2.0.3.0 - Production on 17-MAY-2013 14:06:38

     

    Copyright (c) 1997, 2011, Oracle.  All rights reserved.

     

    Used parameter files:

     

     

    Used TNSNAMES adapter to resolve the alias

    Attempting to contact (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.15.66)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = nbstest)))

    OK (0 msec)

     

     

    监控时候,就是用对应的用户名密码和连接名进行连接。

     

     

     

    [oracle@localhost oratop]$ ./oratop -i 10 sys/sys@nbstest as sysdba

     

    oratop: Release 13.2.1 Production on Fri May 17 14:07:39 2013

     

    Copyright (c) 2011, Oracle.  All rights reserved.

     

     

    6、形色参数

     

    最后我们介绍一下oratop可以使用的参数。在示例中,我们见到了-i参数。

     

    -i参数表示监控间隔。后面一般跟着一个数字,表示每隔几秒钟进行一次数据收集。这个参数要进行选择的,如果太大,很多关键数据不能收集查看。如果设置太少,oratop自身也会造成性能瓶颈。

     

    -b批量运行模式。实时数据如果需要输入到一个结果集合文件,供下一步处理使用,可以使用b模式参数。当设置b参数之后,oratop会持续运行,或者在事先设计好的次数后结束。

     

    -n设置最大迭代操作次数。

     

    -d一改默认是累计事件的统计情况,采用实时统计。

     

     

     

    [oracle@localhost oratop]$ ./oratop -i 5 -b -d / as sysdba

     

    oratop: Release 13.2.1 Production on Fri May 17 14:59:32 2013

     

    Copyright (c) 2011, Oracle.  All rights reserved.

     

     

    Processing ...

     

    oratop: Release 13.2.1 Production on Fri May 17 14:59:32 2013

     

     

    ID   SID  SPID USR PROG  PGA OPN SQLID/BLOCKER  E/T STATUS STE WAIT_EVENT  W/T

     

    oratop: Release 13.2.1 Production on Fri May 17 15:00:17 2013

     

    oratop 1:  202 isis 15:00:09 up  0.0h,  1 ins,   3G mt,  67 sn,  3 us,   3% db

    ID %CU HLD MBPS IORL %FR PGAU ASC ASI ASW ASP   AAS USN  TPS UCPS SSRT DBC DBW

     1   0   0    0   0m  17 183M   1   0   0   0   0.0  67    0    6 286u  60  40

     

    EVENT     (Real-Time)       AVG: TOT WAITS  TIME(s)  AVG_MS PCT  WAIT_CLASS  

    DB CPU                                         1944         100              

    (有省略…..

    oratop: Release 13.2.1 Production on Fri May 17 15:00:27 2013

     

     

    7、结论

     

    Oratop是一个非常出色的轻量型监控工具,条件运行的话可以尝试一下。

  • 相关阅读:
    css优化篇
    select超全超详细总结篇
    meta总结
    富文本编辑
    textarea 换行处理
    07 DRF响应类:Response
    06 内部类
    05 序列化组件
    04 APIView的请求生命周期
    python中if __name__ == '__main__'是什么?
  • 原文地址:https://www.cnblogs.com/lcword/p/5859135.html
Copyright © 2020-2023  润新知