合 oratop工具--实时数据库性能监控工具
- 简介
- 安装
- 运行
- 解释
- 丰富的帮助系统
- 复杂应用
- 参数
- oratop - Utility for Near Real-time Monitoring of Databases, RAC and Single Instance (文档 ID 1500864.1)
- APPLIES TO:
- PURPOSE
- REQUIREMENTS
- CONFIGURING
- INSTRUCTIONS
- Quick Start Guide
- CAUTION
- Abstract
- INTRODUCTION
- ENHANCEMENTS
- SECTIONS
- CLIENT
- II. INTERACTIVE MODE
- 1. Interactive Toggle keys
- 2. Data Description
- 1. [ Auto Toggle ] – Section 4 EVENT/LATCH column
- Figure 15. Auto toggle between Event and latch name (process mode)
- 2. Data Guard
- Figure 16. Snapshot from monitoring a standby database
- 3. Database Service
- Figure 17. Snapshot from monitoring database via Service
- 4. 12c Multitenant Database
- Figure 18. Snapshot from a Multitenant Database connecting to root
- 4.2. Connection to a PDB[7](pluggable database)
- Figure 19. Snapshot from a tenant Database (no “-c”)
- 4.2.4. Connection with the “-c” command line option
- Figure 20. Snapshot from a tenant Database (service with “-c”)
- 5. Batch Mode
- Figure 21. Single iteration batch/SQL mode
- ? Exiting
- ? Unprivileged user
- TECHNICAL DETAILS
- Overhead
- ? The program is not portable; it runs on Linux platforms only
- Caveats
- Blank Screen
- Sluggish response to keyboard key press
- Abnormal termination
- Abnormal exit
- CONCLUSION
- 总结
简介
oratop是Oracle提供的一款轻量级实时监控工具,oratop的最大特点是支持实时轻量级监控。在Oracle 12c的EM Express之前,OEM还是一个重体积的组件。相比之下,oratop完全适合那些想使用数据库实时监控功能,但是又不愿意启动OEM的用户需要。从功能上看,oratop主要的特点有:监控当前的数据库活动;监控数据库性能;识别当前阻塞会话和瓶颈会话。oratop是一个典型的“绿色”软件,不需要安装,只需要给一个运行目录即可。需要注意的是,oratop需要以oracle用户运行,且需要配置环境变量,主要是配置LD_LIBRARY_PATH路径。oratop的运行命令如下所示:
1 2 | /oratop -i 10 / as sysdba /oratop -i 10 username/password@tns_alias |
参数-i表示数据刷新间隔,也就是多长实际更新一下页面数据信息。“/ as sysdba”表示登录本机连接,也可以远程使用oratop连接到其它服务器上去。运行命令后,等待一会就会出现字符界面显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Oracle 11g - orc 16:42:29 up: 5.4h, 1 ins, 0 sn, 0 us, 1.4G mt, 0.4% db ID %CPU LOAD %DCU AAS ASC ASI ASW AST IOPS %FR PGA UTPS UCPS SSRT %DBT 1 6 0 0 0 0 0 0 0 5 40 239M 0 1 647u 100 EVENT (C) TOT WAITS TIME(s) AVG_MS PCT WAIT_CLASS db file sequential read 17317 452 26.1 56 User I/O DB CPU 160 20 log file sync 3418 98 28.9 12 Commit db file scattered read 902 56 62.2 7 User I/O control file sequential read 27554 34 1.2 4 System I/O ID SID SPID USR PROG S PGA SQLID/BLOCKER OPN E/T STA STE EVENT/*LA W/T |
从字符界面上看,oratop结果集合分为四个部分,分别为:Header Section、Database Section、DB Events Section和Processes Section。
① 在Header Section中,包括了连接数据库的总体信息,包括运行多长时间、实例个数(RAC)、内存大小和数据库占据CPU时间的比例。
② 在Database Section中,包括了各个实例(RAC)下,每个实例的基本参数和复杂信息。如每个实例活动会话个数、每秒的事务数量和内存使用情况等。
③ 在DB Events Section是从Wait Event角度进行评估。评估排在头几位的等待事件信息,默认情况下,这个度量是累计的,也就是从启动数据库到当前时间,可以切换到当前时间模式下。
④ 在Processes Section是记录下处在Block和Contention状态的连接会话信息。当数据库出现有会话被阻塞的情况,就会记录在这个Section里面。
MOS文档“oratop - Utility for Near Real-time Monitoring of Databases, RAC and Single Instance (文档 ID 1500864.1)”对oratop有详细的说明。
在任何系统优化过程中,“80/20原则”是我们一定要关注的问题。简单的说,就是我们系统80%的性能问题、现象,都是有少数几个甚至一个问题造成的。这就需要我们面对复杂的系统性能问题的时候,要学会“拨开云雾、蛇打七寸”。
落实在Oracle优化过程,同样如此。从10g开始,我们开始频繁接受“Top-xxx”的概念,无论是从OEM(Oracle Enterprise Manager)还是借助AWR事后报告库,解决主要矛盾,发掘主要Top Events就成了我们日常工作不可缺少的部分。
实际工作中,对Top的发掘和Oracle动态信息的收集,很多时候还是有点力不从心和滞后之感强烈。Oracle官方的客户服务网站MOS,经常有一些有用的小工具,提供给我们使用。本篇中,我们主要来介绍下Oratop工具的特点和使用。
Oratop源自MOS的一篇文章和工具链接(oratop - utility for near real-time monitoring of databases, RAC and Single Instance [ID 1500864.1])。从名称上看,Oratop最大特点是支持实时轻量级监控。在Oracle 12c的EM Express之前,OEM还是一个重体积的组件。相比之下,oratop完全适合那些想使用数据库实时监控功能,但是又不愿意启动OEM的用户需要。
从功能上看,Oratop主要有三大特点:
ü 监控当前的数据库活动;
ü 监控数据库性能;
ü 识别当前阻塞会话和瓶颈会话;
目前,Oratop是在MOS上免费下载,分别有32位和64位两个版本。
安装
从网站上下载软件之后,是一个命名为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连接到其他服务器上面去。更进一步说,通过远程连接的方法,可以连接到任何版本操作系统上的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
解释
从字符界面上看,oratop结果集合分为四个部分,分别为:Header Section、Database Section、DB Events Section和Processes Section。
Header Section中,包括了连接数据库的总体信息,包括运行多长时间、实例个数(for RAC)、内存大小和数据库占据CPU时间的比例。
Database Section中,包括了各个实例(for RAC)下,每个实例的基本参数和复杂信息。如每个实例活动会话个数、每秒的事务数量和内存使用情况等。
DB Events Section是从Wait Event角度进行评估。评估排在头几位的等待事件信息,默认情况下,这个度量是累计的,也就是从启动数据库到当前时间。我们可以切换到当前时间模式下。
Processes Section是记录下处在Block和Contention状态的连接会话信息。当数据库出现有会话被阻塞的情况,就会记录在这个Section里面。
丰富的帮助系统
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
复杂应用
Oratop的本质和优势在于轻量型和实时。一个很小的程序,可以在自身消耗较小的情况下发现问题。
Block and Contentio是Process Section部分重点问题。阻塞是数据库内部资源征用的一种结果,及时发现Blocking和Contention是非常重要的。
下面片段是笔者模拟的一个两个会话同时修改一行数据,之后一个会话被阻塞时,oratop监控到的情况。