熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE性能診斷―學習statspack筆記(二)

2022-06-13   來源: Oracle 

  Oracle性能診斷涉及對象
  
  A   服務器網絡以及磁盤(外部的環境)
  B   實例(SGA後台進程)
  C   對象(表索引段……)
  D   SQL
  E   設計(指的是應用的設計這部分一般說來是很難改變了)
  
  ORACLE性能診斷要遵循上面的順序先察看服務器是否存在問題主要從CPURAMDISK配置是否存在問題檢查操作系統的核心參數的設置等等如果是跨地域的進行共享的多個ORACLE網絡通信性能也是非常的關鍵的ORACLE利用的是TNS(Transparent Network Substrate 透明網絡層)提供數據庫之間的分布傳輸另外影響ORACLE相應時間的最大的單獨組成部分是磁盤I/O能夠減少磁盤I/O的任何事情都會對ORACLE的性能產生正面的影響比如改變ORACLE初始化參數調整相應的SQL等對於ORACLE的實例調整應該注意的問題是過載的ORACLE的SGA會導致嚴重的性能問題對於ORACLE實例的調整主要包括初始化參數數據緩沖存儲(DEFAULTKEEPRECYCLE)和SGA中共享池和庫緩存等還有就是ORACLE對象的調整包括存儲參數等等最後是SQL語句的調整
  
  STATSPACK概述
  
  STATSPACK來源在ORACLE最早版本就存在的UTLBSTAT和UTLESTAT工具開始的BSTATESTAT工具就可以直接從ORACLE的內存結構中獲取信息
  
  STATSPACK通過獲取數據庫當前狀態的快照來進行工作大部分的情況我們會規劃一個以小時為單位來收集數據的JOB並在需要的時候請求附加快照當我們獲取快照時STATSPACK會從SGA內部的RAM內存結構中采樣並記錄到相應的STATSPACK表中注意的是大多數情況下SGA中的V$視圖與相應的的STATSPACK表之間存在直接的對應關系比如
  
  V$SYSSTAT >STATS$SYSSTAT
  
  SQL> DESC V$SYSSTAT
  
  Name                   Null?  Type
  
  
  STATISTIC#                     NUMBER
  NAME                        VARCHAR()
  CLASS                       NUMBER
  VALUE                       NUMBER
  
  SQL> DESC STATS$SYSSTAT
  
  Name                   Null?  Type
  
  SNAP_ID                  NOT NULL NUMBER()
  DBID                   NOT NULL NUMBER
  INSTANCE_NUMBER              NOT NULL NUMBER
  STATISTIC#                NOT NULL NUMBER
  NAME                   NOT NULL VARCHAR()
  VALUE                       NUMBER
  
  在理解STATSPACK工具的時候很關鍵的是要明白通過STATSPACK快照收集的信息是累計值從V$視圖中收集到起始時間的數據庫信息然後進行持續累加知道實例中止我想這也許就應該是STATSPACK不能產生兩張跨越SHUTDOWN的快照的報告的原因吧
  
  對應STATSPACK存在一系列的STATSPACK表不同的ORACLE版本會有一定的差異這些表大體上分為控制表參數表事件表事務處理表並行服務器表概要表系統表等等
  
  下面是我列出的ORACLEI的STATSPACKE表
  
  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
  ABLE_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
  
   rows selected
  
  其中STATSPACK表的主要錨定點是STATS$DATABASE_INSTANCE具體的表的介紹我打算放到後面的文章進行討論
  
  可以說以前我們的Oracle性能調整主要是一種REACTIVE TUNNING(反應式調整)通過STATSPACK工具我們可以進行長期趨勢分析性能問題事後分析資源規劃以及預測建模等我們完全可以采用一種PROACTIVE TUNNING(前瞻式調整)並且從ORACLEI開始ORACLE可以動態的改變ORACLE實例的內存配置ORACLE也正朝著動態數據庫配置邁進
From:http://tw.wingwit.com/Article/program/Oracle/201311/11199.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.