【oracle性能監控】- 使用Spotlight監控oracle及瓶頸分析

1 Spotlight簡介

Spotlight是Quest公司出品的用於第三方性能監控的圖形化工具,Spotlight相關的產品衆多,如Spotight on Linux/Unix、Spotight on Windows、Spotlight on SQL Server、 Spotlight on DB二、Spotight on Oracle等,本文介紹的Spotlight就是用於oracle領域的圖形化、實時性能監控診斷工具-Spotight on Oracle,它提供了直觀、可視化的數據庫活動展示能力,一旦某個指標出現性能瓶頸,就能可視化展示出來。所以,DBA或性能測試人員能夠據此簡單、快速地追查性能瓶頸的底層緣由。另外,Spotlight不須要在服務器端安裝代理,只須要建立一些管理對象,方便部署和應用。
html

2 部署Spotlightpython

Spotlight的使用依賴oracle客戶端,部署安裝前須要準備以下安裝文件:web

1) Oracle客戶端instant clientsql

官網下載地址:
數據庫

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-releasessession


以上兩個工具按照提示步驟一步步安裝便可,詳細安裝步驟再也不贅述。其中,oracle client須要配置系統環境變量PATH、TNS_ADMIN,其值爲tnsnames.ora文件所在目錄,如oracle

PATH:D:\oracle\instantclient_11_2;

TNS_ADMIN:D:\oracle\instantclient_11_2;

3 使用Spotlight進行性能監控

使用Spotlight進行性能監控前,須要作一些簡單配置,具體使用方法以下:

3.1 配置數據庫鏈接信息

在oracle 客戶端工具的安裝目錄下找到tnsnames.ora文件,在文件裏配置須要監控數據庫實例的鏈接信息,形式以下:

1.png

3.2 配置監控用戶

在實際監控中,建議建立一個專用的監控用戶來獲取監控信息,點擊菜單項file-Oracle User Wizard,打開用戶建立嚮導,如圖所示,而後根據提示輸入DBA鏈接認證、建立一個新用戶、輸入用戶名和密碼(如,用戶名:spotlight,密碼:test123)、選擇表空間,一步步完成便可。

2.png

3.3 建立數據庫鏈接

1 點擊工具欄Connect快捷鍵,打開鏈接管理器嚮導,雙擊New connection圖標,輸入鏈接名字後,便可打開鏈接屬性配置窗口,以下圖所示:

3.png

2 打開鏈接屬性配置窗口後,能夠看到窗口主要有三部分:ORACLE鏈接配置、ASM鏈接配置、服務器鏈接配置,其中後面兩項是可選項,若是不須要,不要勾選便可。鏈接信息配置完成後,點擊ok,便可看到監控主界面。

4.png

3 監控界面介紹

當上述配置完成後,執行鏈接,就能看到Spotlight的監控界面,如圖所示。從界面能夠實時觀察數據流向,同時能夠直觀看出系統的總體運行狀況,若是系統哪方面出現性能瓶頸或問題,會報相應的警告,紅色警告的級別爲最嚴重。

5.png

注:綠色區域表明相關區域正常,×××區域表明該區域超出標準值出現警告,紅色區域表明該區域出現異常。


3 Spotlight重點監控及分析

3.1  Top Sessions

點擊工具欄圖標6.png,能夠打開Top Sessions面板,如圖所示,經過該面板能夠查看當前session的狀況,如哪一個session佔用了較多資源,以此定位數據庫問題。經過點擊列名能夠進行排序,如點擊CPU(ms/s),會根據CPU進行升序或降序排列;選擇某個session,進行雙擊能夠查看該session的詳細信息,如Session Details、Session Waits、Session SQL、Session Locks等;或者在某個session上右鍵,能夠執行kill session、trace session等操做。

7.png 

在Session Infomation窗口,須要重點關注的是Session Waits、Session SQL、Session Locks,如圖所示,其做用分別爲:

Session Waits:找出與該session相關的等待事件;

Session SQL:找出該session相關的最近執行的sql語句;

Session Locks:與該session相關的鎖信息,查看是否阻塞;

8.png

3.2 Top SQL

點擊工具欄圖標9.png,能夠打開Top SQL面板,如圖所示,經過該面板能夠查看系統中佔用資源較大的sql語句,選擇對應的行,能夠查看SQL information詳細信息。

10.png

該面板主要用於查找存在瓶頸的SQL語句,如哪些SQL耗時較長,哪些SQL磁盤讀寫多、緩存命中率低等,而後針對有問題的SQL進行優化,經過能夠先從語法上優化,再從業務邏輯上優化。

3.3 Activity

點擊工具欄圖標11.png,能夠打開Activity面板,如圖所示,該面板以直方圖的形式展現了IO、活動session、等待事件等信息,經過其餘tab頁面能夠查看具體的waits事件、Locks等信息,該界面數據通常用於輔助分析。

12.png

3.4 I/O和配置內存

點擊工具欄圖標13.png,能夠分別打開I/O和配置內存面板,如圖所示,經過這兩個面板能夠查看session、數據文件的IO狀況、數據庫內存配置及使用狀況等,通常用於輔助分析。

14.png

在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。