從<<提問的智慧>>引發出對資料庫的一套解決方案

anycall2010發表於2008-07-24

rollingpig 的<<提問的智慧>>已經在論壇釋出2年多了,我覺得他的這個文章就是解決資料庫的一套完整方法論.

1.遇到問題初期:

  當遇到問題的時候,如果有報錯程式碼,我首先到metalink:  http://metalink.oracle.com ,查詢報錯的原因.metalink的內容其實寫得很詳細.

  當遇到有些引數不太理解或者想不起來的時候,我首先會到 online document: http://tahiti.oracle.com 的refenerce裡面查詢該引數的含義,(我個人認為在安裝配置的時候,這個用的多一些).

  有些時候,當遇到語言障礙或者是METALINK解釋和實際情況不符的時候,我會www.google.cn一下.

備註:在alert log裡發現了報錯資訊或者在執行時發現了報錯資訊,那麼,最  簡單的做法就是將錯誤資訊或者錯誤號先在google/metalink/論壇裡搜尋 一下。
  這裡特別提一下Ora-7445/ora-600的錯誤,是不能單用錯誤號來搜尋的,必須加上後面的相應資訊才能找到合適的答案。
  ORA-600時,加上後面的argument,Ora-7445時,還需要開啟相應的TRACE檔案,並擷取其中有意義的部分進行搜尋。

2.如果判斷是Instance 方面的問題,首先檢視alerlog.

 alert log的位置,多數情況下是$ORACLE_BASE/admin/$ORACLE_SID/bdump底下,當然,確切的說應該是在 db parameter background_dump_dest定義的目錄底下。如果沒有定義background_dump_dest,或者$ORACLE_HOME/rdbms/log底下。

3.網路的問題:檢視 listener.ora ,sqlnet.ora ,並執行lsnrctl status.然後檢視client 端的的 tnsnames.ora , sqlnet.ora ,並執行tnsping

4.DB總體效能問題: 在peak time 做 statspack,並檢視statspack report。同時檢查CPU/MEM配置,以及使用命令檢視CPU IDLE/free menory 的情況 .

備註:1.關於statspack的如何使用,請參考eygle系列文章    (http://www.eygle.com/statspack/statspack_list.htm )

2.如何獲得CPU Usage或者Free Mem的資訊. unix 下通常可以通過vmstat來獲得,以及根據不同的作業系統而定.

5.SQL效能問題,列出當前SQL,以及執行計劃。同時應提供表結構,index情況,Table的record數。CBO/RBO,table是否analyze等資訊。

備註: 執行計劃的獲取: 通過 EXPLAIN PLAN FOR ,並執行@?/rdbms/admin/utlxpls.sql來獲取 。
 或者通過在sqlplus 裡執行set autotrace 的方式來獲得……;也可以通過第三方軟體獲得.








 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8334342/viewspace-408800/,如需轉載,請註明出處,否則將追究法律責任。

相關文章