文章詳情頁
ORACLE性能診斷―學習statspack筆記(二)[概述]
瀏覽:3日期:2023-11-18 08:18:31
Oracle性能診斷―學習statspack筆記(二)[概述]作者:劉穎博 時間:2004-3-3mail:[email protected],請指正轉載請注明出處及作者 ORACLE性能診斷涉及對象A.;;;服務器、網絡以及磁盤(外部的環境)B.;;;實例(SGA,后臺進程)C.;;;對象(表,索引,段……)D.;;SQLE.;;;設計(指的是應用的設計,這部分一般說來是很難改變了)ORACLE性能診斷要遵循上面的順序,先察看服務器是否存在問題,主要從CPU,RAM,DISK配置是否存在問題,檢查操作系統的核心參數的設置等等;假如是跨地域的進行共享的多個ORACLE,網絡通信性能也是非常的要害的,ORACLE利用的是TNS(Transparent Network Substrate 透明網絡層)提供數據庫之間的分布傳輸;另外影響ORACLE相應時間的最大的單獨組成部分是磁盤I/O,能夠減少磁盤I/O的任何事情都會對ORACLE的性能產生正面的影響,比如改變ORACLE初始化參數,調整相應的SQL等;對于ORACLE的實例調整應該注重的問題是,過載的ORACLE的SGA會導致嚴重的性能問題,對于ORACLE實例的調整主要包括:初始化參數、數據緩沖存儲(DEFAULT、KEEP、RECYCLE)和SGA中共享池和庫緩存等;還有就是ORACLE對象的調整,包括存儲參數等等;最后是SQL語句的調整。STATSPACK概述 STATSPACK來源在ORACLE最早版本就存在的UTLBSTAT和UTLESTAT工具。開始的BSTAT-ESTAT工具就可以直接從ORACLE的內存結構中獲取信息。 STATSPACK通過獲取數據庫當前狀態的快照來進行工作。大部分的情況,我們會規劃一個以小時為單位來收集數據的JOB,并在需要的時候請求附加快照。 當我們獲取快照時,STATSPACK會從SGA內部的RAM內存結構中采樣,并記錄到相應的STATSPACK表中,注重的是,大多數情況下,SGA中的V$視圖與相應的的STATSPACK表之間存在直接的對應關系,比如:V$SYSSTAT --------->STATS$SYSSTATSQL> DESC V$SYSSTATName;;;Null?;Type----------------------------------------- -------- ----------------------------STATISTIC# NUMBERNAME;;;;VARCHAR2(64)CLASS;;;;;;;;;;;NUMBERVALUE;;;NUMBERSQL> DESC STATS$SYSSTATName;;;Null?;Type----------------------------------------- -------- ----------------------------SNAP_ID;;;;;;;;NOT NULL NUMBER(6)DBID;;;NOT NULL NUMBERINSTANCE_NUMBERNOT NULL NUMBERSTATISTIC#;;;;;NOT NULL NUMBERNAME;;;;;;;;;;;NOT NULL VARCHAR2(64)VALUE;;;NUMBER 在理解STATSPACK工具的時候,很要害的是要明白通過STATSPACK快照收集的信息是累計值,從V$視圖中收集到起始時間的數據庫信息,然后進行持續累加,知道實例中止,我想,這也許就應該是STATSPACK不能產生兩張跨越SHUTDOWN的快照的報告的原因吧。 對應STATSPACK存在一系列的STATSPACK表,不同的ORACLE版本會有一定的差異。這些表大體上分為控制表、參數表、事件表、事務處理表、并行服務器表、概要表、系統表等等下面是我列出的ORACLE9I的STATSPACKE表:SQL> select table_name from dba_tables where table_name like 'STATS$%';TABLE_NAME------------------------------STATS$DATABASE_INSTANCESTATS$LEVEL_DESCRIPTIONSTATS$SNAPSHOTSTATS$DB_CACHE_ADVICESTATS$FILESTATXSSTATS$TEMPSTATXSSTATS$LATCHSTATS$LATCH_CHILDRENSTATS$LATCH_PARENTSTATS$LATCH_MISSES_SUMMARYSTATS$LIBRARYCACHETABLE_NAME------------------------------STATS$BUFFER_POOL_STATISTICSSTATS$ROLLSTATSTATS$ROWCACHE_SUMMARYSTATS$SGASTATS$SGASTATSTATS$SYSSTATSTATS$SESSTATSTATS$SYSTEM_EVENTSTATS$SESSION_EVENTSTATS$BG_EVENT_SUMMARYSTATS$WAITSTATTABLE_NAME------------------------------STATS$ENQUEUE_STATSTATS$SQL_SUMMARYSTATS$SQLTEXTSTATS$SQL_STATISTICSSTATS$RESOURCE_LIMITSTATS$DLM_MISCSTATS$UNDOSTATSTATS$SQL_PLAN_USAGESTATS$SQL_PLANSTATS$SEG_STATSTATS$SEG_STAT_OBJTABLE_NAME------------------------------STATS$PGASTATSTATS$IDLE_EVENTSTATS$PARAMETERSTATS$INSTANCE_RECOVERYSTATS$STATSPACK_PARAMETERSTATS$SHARED_POOL_ADVICESTATS$SQL_WORKAREA_HISTOGRAMSTATS$PGA_TARGET_ADVICE41 rows selected.其中STATSPACK表的主要錨定點是STATS$DATABASE_INSTANCE,具體的表的介紹我打算放到后面的文章進行討論。 可以說,以前我們的ORACLE性能調整主要是一種REACTIVE TUNNING(反應式調整),通過STATSPACK工具,我們可以進行長期趨勢分析、性能問題事后分析、資源規劃以及猜測建模等,我們完全可以采用一種PROACTIVE TUNNING(前瞻式調整)。并且從ORACLE9I開始,ORACLE可以動態的改變ORACLE實例的內存配置,ORACLE也正朝著動態數據庫配置邁進。(待續)……………………………………………………………………………………參考Donald K.Burleson《ORACLE HIGH-PERFORMANCE TUNING WITH STATSPACK》
排行榜
