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是一個非常出色的輕量型監控工具,條件運行的話可以嘗試一下。

 

捕獲.JPG

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章