ORACLE性能診斷―學習statspack筆記(二)[概述]

ORACLE性能診斷―學習statspack筆記(二)[概述]<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

作者:劉穎博

時間:2004-3-3

mail[email protected],請指正

 

轉載請註明出處及作者

 

ORACLE性能診斷涉及對象

 

A.      服務器、網絡以及磁盤(外部的環境)

B.      實例(SGA,後臺進程)

C.      對象(表,索引,段……)

D.     SQL

E.      設計(指的是應用的設計,這部分一般說來是很難改變了)

 

ORACLE性能診斷要遵循上面的順序,先察看服務器是否存在問題,主要從CPURAMDISK配置是否存在問題,檢查操作系統的核心參數的設置等等;如果是跨地域的進行共享的多個ORACLE,網絡通信性能也是非常的關鍵的,ORACLE利用的是TNSTransparent Network Substrate 透明網絡層)提供數據庫之間的分佈傳輸;另外影響ORACLE相應時間的最大的單獨組成部分是磁盤I/O,能夠減少磁盤I/O的任何事情都會對ORACLE的性能產生正面的影響,比如改變ORACLE初始化參數,調整相應的SQL等;對於ORACLE的實例調整應該注意的問題是,過載的ORACLESGA會導致嚴重的性能問題,對於ORACLE實例的調整主要包括:初始化參數、數據緩衝存儲(DEFAULTKEEPRECYCLE)和SGA中共享池和庫緩存等;還有就是ORACLE對象的調整,包括存儲參數等等;最後是SQL語句的調整。

 

STATSPACK概述

 

       STATSPACK來源在ORACLE最早版本就存在的UTLBSTATUTLESTAT工具。開始的BSTAT-ESTAT工具就可以直接從ORACLE的內存結構中獲取信息。

       STATSPACK通過獲取數據庫當前狀態的快照來進行工作。大部分的情況,我們會規劃一個以小時爲單位來收集數據的JOB,並在需要的時候請求附加快照。

       當我們獲取快照時,STATSPACK會從SGA內部的RAM內存結構中採樣,並記錄到相應的STATSPACK表中,注意的是,大多數情況下,SGA中的V$視圖與相應的的STATSPACK表之間存在直接的對應關係,比如:

 

V$SYSSTAT --------->STATS$SYSSTAT

 

SQL> DESC V$SYSSTAT

 Name                                      Null?    Type

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

 STATISTIC#                                         NUMBER

 NAME                                               VARCHAR2(64)

 CLASS                                              NUMBER

 VALUE                                              NUMBER

 

SQL> DESC STATS$SYSSTAT

 Name                                      Null?    Type

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

 SNAP_ID                                   NOT NULL NUMBER(6)

 DBID                                      NOT NULL NUMBER

 INSTANCE_NUMBER                           NOT NULL NUMBER

 STATISTIC#                                NOT NULL NUMBER

 NAME                                      NOT NULL VARCHAR2(64)

 VALUE                                              NUMBER

      

在理解STATSPACK工具的時候,很關鍵的是要明白通過STATSPACK快照收集的信息是累計值,從V$視圖中收集到起始時間的數據庫信息,然後進行持續累加,知道實例中止,我想,這也許就應該是STATSPACK不能產生兩張跨越SHUTDOWN的快照的報告的原因吧。

       對應STATSPACK存在一系列的STATSPACK表,不同的ORACLE版本會有一定的差異。這些表大體上分爲控制表、參數表、事件表、事務處理表、並行服務器表、概要表、系統表等等

下面是我列出的ORACLE9ISTATSPACKE表:

SQL> select table_name from dba_tables where table_name like 'STATS$%';

 

TABLE_NAME

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

STATS$DATABASE_INSTANCE

STATS$LEVEL_DESCRIPTION

STATS$SNAPSHOT

STATS$DB_CACHE_ADVICE

STATS$FILESTATXS

STATS$TEMPSTATXS

STATS$LATCH

STATS$LATCH_CHILDREN

STATS$LATCH_PARENT

STATS$LATCH_MISSES_SUMMARY

STATS$LIBRARYCACHE

 

TABLE_NAME

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

STATS$BUFFER_POOL_STATISTICS

STATS$ROLLSTAT

STATS$ROWCACHE_SUMMARY

STATS$SGA

STATS$SGASTAT

STATS$SYSSTAT

STATS$SESSTAT

STATS$SYSTEM_EVENT

STATS$SESSION_EVENT

STATS$BG_EVENT_SUMMARY

STATS$WAITSTAT

 

TABLE_NAME

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

STATS$ENQUEUE_STAT

STATS$SQL_SUMMARY

STATS$SQLTEXT

STATS$SQL_STATISTICS

STATS$RESOURCE_LIMIT

STATS$DLM_MISC

STATS$UNDOSTAT

STATS$SQL_PLAN_USAGE

STATS$SQL_PLAN

STATS$SEG_STAT

STATS$SEG_STAT_OBJ

 

TABLE_NAME

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

STATS$PGASTAT

STATS$IDLE_EVENT

STATS$PARAMETER

STATS$INSTANCE_RECOVERY

STATS$STATSPACK_PARAMETER

STATS$SHARED_POOL_ADVICE

STATS$SQL_WORKAREA_HISTOGRAM

STATS$PGA_TARGET_ADVICE

 

41 rows selected.

 

其中STATSPACK表的主要錨定點是STATS$DATABASE_INSTANCE,具體的表的介紹我打算放到後面的文章進行討論。

       可以說,以前我們的ORACLE性能調整主要是一種REACTIVE TUNNING(反應式調整),通過STATSPACK工具,我們可以進行長期趨勢分析、性能問題事後分析、資源規劃以及預測建模等,我們完全可以採用一種PROACTIVE TUNNING(前瞻式調整)。並且從ORACLE9I開始,ORACLE可以動態的改變ORACLE實例的內存配置,ORACLE也正朝着動態數據庫配置邁進。

 

(待續)

……………………………………………………………………………………

參考

Donald K.BurlesonORACLE HIGH-PERFORMANCE TUNING WITH STATSPACK

 

 

 

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