Oracle進階培訓 第7課 學習筆記

來源:互聯網
上載者:User
 

Oracle進階培訓 第7課 學習筆記 作者:JackYang (JackYang.sh@gmail.com)日期:2006-10-20 本課實驗已通過上機驗證。 效能調優以下筆記內容與老師提供的檔案ORA_TRAIN6.PPT相對應 效能調優到底由誰調優,不僅是DBA的事情,和系統開發人員密切相關。在應用設計和編程階段對效能調優很重視,那麼很多效能問題不會出現。 誤解:開發完畢再調優。開發完畢再調優很困難。 和系統管理員也有關,UNIX和WINDOWS系統參數是否調優。 如何調優?調優哪些東西? 調優目標包括:回應時間資料庫的可用性資料庫的命中率。ORACLE裡面很多事情在記憶體中進行。如果所要的資料在記憶體中找不到。那麼就要從檔案中讀取。效率就會受到影響。 調優目標包括:儘可能少的訪問硬碟上的資料區塊。盡量訪問記憶體中的資料。在記憶體中緩衝資料區塊。希望執行一條SQL語句時,不要編譯和解析。而是從共用記憶體中訪問。屬於命中率的一種。在記憶體中找到SQL已經解析過的代碼。在記憶體中找不到叫脫靶。如果一定要進行I/O操作,那麼希望I/O操作能盡量快。任何使用者的操作,不需要等待資源。通過調優調整資源的爭用。希望備份操作和日常的管理操作能夠對ORACLE資料庫的正常運行產生最小的影響。盡量在晚上做。 主要調整的項目:最佳化執行個體提高SQL語句重用的機率。希望在記憶體中找到已經編譯的代碼。空間的管理。包括,記憶體空間管理和資料檔案的管理最佳化對資料的訪問。 調優步驟調整設計調整應用              即調整SQA調整記憶體              調整redo log buffer,shared buffer,large buffer調整IO                 調整爭用(衝突)     調整鎖,latch(鎖存器)調整作業系統。    UNIX,WINDOWS ORACLE中和效能調整密切相關的檔案:Alert log file 警告檔案,ORACLE的重要操作和內部錯誤,會在ALERT LOG FILE中產生一些資訊。非預設的參數也會顯示。DBA每天應該看一次ALERT LOG FILE,不管資料庫是否正常。因為有些問題時積累的,越早發現越容易解決。ALERT log file會不斷增長。每天檢查後,覺得沒問題,就清空。也可以進行備份。 通過BACKGROUP_DUMP_DEST參數設定ALERT_LOG_FILE的位置。對每一個資料庫都應該設定一個此參數,保證每個資料庫的ALERT檔案在不同地方,找起來比較方便。 在ALERT log file中可以看到不同進程產生的資訊。 BACKGROUND TRACE fileORACLE能夠跟蹤每一個後台進程,跟蹤之後能夠產生TRACE file。不同進程產生的跟蹤資訊,放在不同的trace檔案。trace檔案和每一個後台進程對應。每一個今後台進程有很多個trace檔案。 user trace file使用者也可以產生TRACE檔案,記載SQL語句。使用者把TRACE設為TRUE,每執行一條SQL語句,都會在TRACE檔案中記載。需要通過ORACLE的工具來對這些TRACE檔案進行翻譯。這個功能影響效能,所以一般都關閉這個功能,只有在調試的時候才開啟。可以有3級初始化參數檔案中SQL_TRACE參數為TRUE,就開啟使用者TRACE使用ALTER SESSION命令,在目前使用者會話中,啟用使用者TRACE功能ORACLE的程式包中有一個procedure SET_SQL_TRACE_IN_SESSION,可以在應用程式中調用。 USER_DUMP_DEST這個參數,在初始化參數檔案中設定,指定使用者TRACE檔案的路徑。  調優的工具:動態視圖 V$打頭的視圖DBA_打頭的視圖UTLBSTAT.SQL和UTLESTAT.SQLUTLBSTAT.SQL開始收集ORACLE的資料。UTLESTAT.SQL結束收集ORACLE的資料。oracle8之前用這兩個SQL檔案,不推薦使用,產生的報表不方便看,對結果不儲存。 ORACLE9i之後使用statspack來代替這兩個SQL檔案,不需要開始和結束的時候都運行。可以在任何時刻運行這個statspack,運行這個程式,就會產生當時資料庫的快照,包括:CPU、記憶體、IO、鎖、鎖存器、爭用的各種情況。而且可以產生statspack的報表,這個報表易讀。 Enterprise Manager,圖形介面好用。ORACLE的診斷調整包。可以通過ENTERPRISE MANAGER來調用。www.oracle.com.cn上常會有些ORACLE專家提供的工具下載。 一些用的較多的視圖DBA_TABLESDBA_TAB_COLUMNSDBA_CLUSTERSDBA_INDEXESINDEX_STATS  在這些表裡面有些統計資料是沒有的,只有運行ANALYZE命令之後,才會有相應的統計資料。 X$tables 是ORACLE開發人員和ORACLE全球支援使用的。內容格式不公開。 在調優時會碰到的表/動態視圖,分以下幾類和執行個體有關和記憶體有關和DISK有關和爭用有關和使用者的會話有關 最重要的5個視圖V$STATNAME包含所有參數的名稱 V$SYSSTAT重中之重,整個系統的統計資料。從資料庫啟動時開始統計,累計的資料。statspack工具的來源資料就是從這個動態視圖得到。包含所有參數的統計值statistic# 統計標號name      參數名稱class       類別value       參數的值 V$SGASTAT調整ORACLE記憶體參數POOL     用於區分各種用途的POOLname       相應的參數名稱bytes       記憶體的大小 V$EVENT_NAME對ORACLE資料庫進行調整,一個要看統計參數,另一個要看EVENT每次等待會產生一個EVENT找到EVENT,就找到了問題所在,定位問題。event#nameparameter1parameter2parameter3  V$SYSTEM_EVENTtotal_waits     總共等待了多少時間total_timeouts總共逾時多少次time_waited    average_wait   平均等待的時間  同樣重要的幾個表前面是SYSSTAT,這裡是SESSIONSTATV$SESSTAT和V$STATNAME勾連起來能夠找到SESSION的name。 V$SESSION  V$SESSION_EVENT  V$EVENT_NAME  V$SESSION_WAIT 在剛才這些動態視圖中看到統計參數,就把TIMED_STATISTICS設定為trueoracle9i中這個參數預設為true,ORACLE8i中這個參數預設為false8i到9i主要就是實現了管理的自動化。 statistics報告中可以看到的內容  ORACLE中很重要的一張表stats$lib decode(gethits,0,1,gethits)gethits如果為0,就變成1,不為0就等於gethits。避免gethits為0。   實驗一:實驗目的:效能調優1.         dos> cd ora9lab2.         dos> set ORACLE_SID=DB913.         dos> sqlplus /nolog4.         SQL> connect sys/ora123 as sysdba5.         SQL> startup6.         SQL> select name from v$datafile;       看看資料檔案在哪個目錄下 7.         SQL> create tablespace perfstat datafile ‘D:/perfstat/perfstat1.dbf’ size 200m autoextend on;       建立資料表空間       之前先在D盤下建立perfstat子目錄 8.         SQL> @?/rdbms/admin/spcreate       輸入perfstat_password的值:輸入ora123       輸入default_tablespace的值:輸入perfstat       輸入 temporary_tablespace的值:輸入TEMP,一個暫存資料表空間        相對應的命令是@?/rdbms/admin/spdrop        9.         SQL> exec statspack.snap       開始統計,照張快照。做些操作之後,再照張快照。       進入了perfstat目錄 10.     再開一個視窗11.     dos> cd ora9lab12.     dos> sqlplus /nolog13.     SQL> connect sys/ora123@DB91D as sysdba14.     SQL> select * from scott.dept; 15.     回來原來視窗16.     SQL> exec statspack.snap       再做一張快照 17.     SQL> select username from v$session       查看目前使用者 18.     SQL> @?/rdbms/admin/spreport       建立一個報表       可以看到做了幾張快照       輸入begin_snap的值:輸入1       輸入end_snap的值:輸入2       輸入report_name的值:可以之間按斷行符號,報表名稱產生在預設目錄下。 19.     SQL> host dir       查看報表在哪個目錄下       名稱是sp_1_2.LST       sp_起始快照序號_結束快照序號.LST        redo nowait 要大於90%以上,小於的時候要進行調整。       in-memory sort要大於90%,70%以下就有問題       Execute to Parse    執行解析的次數        Top 5 Timed Events       等待時間最長的5個事件,是發現效能問題的關鍵。       log file parallel write 從redo log buffer寫入redo log file              Background Wait Events       後台進程的等待       Waits一般是指次數              對這張報告要仔細研究。 20.     SQL> @?/rdbms/admin/sppurge       刪除一個範圍內的快照       輸入 losnapid的值:範圍開始的id號,1       輸入 hisnapid的值:範圍結束的id號,2 兩個快照之間運行應用程式,統計資料就比較準確了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.