Diagnostic and Tuning Tools
1、alert log file:DBA必須定期查看alert log文件,主要關注的信息主要有:內部的errors(ORA-600)和block corruption errors(ORA-1578或ORA-1498);DB的操作信息,如create database、startup、shutdown、archive log、recover等;對非默認參數的設置。它所記錄的checkpoint start和end時間、未完成的checkpoint、歸檔時間crash的恢復時間是對調優很重要的。
注:alert_sid.log文件的路徑由參數background_dump_dest決定;只有在參數log_checkpoints_to_alert被設置為true時,才會將checkpoint動作記錄其中。
2、后臺進程的trace files:Oracle會將后臺進程檢測出的errors信息寫入trace files,主要用于診斷和查找故障原因,不包含tuning信息。
3、user trace files:它可以通過user或DBA的server processes請求產生,分為instance-level-tracing(通過set sql_trace=true/false設置)和session-level-tracing(通過 dbms_system.set_sql_trace_in_session設置指定session的tracing,或用alter session set sql_trace=true設置當前session的tracing)。user trace files包含了對tracing session的sql的信息。此外,還可用于alter database backup controlfile to trace和alter system set events(這個看到后面再說,現在不同了解)
4、views、utilities和tools:
①v$xxx視圖顯示了當前system的動態統計信息特別是v$sysstat。但是這些信息時往往是自實例啟動以來的一個累計數據。所以有時會比較unhelpful。DBA_xxx視圖記錄了數據的存儲統計信息。
②utlbstat和utlestat工具腳本:主要收集某段時間內的性能指標。
③statspack:其本質與utlbstat和utlestat是一致的,收集性能指標,優點在于它可以把統計信息保存在DB中從而進行不同階段的比較。
④等待事件wait events:在troubleshooting時需要關注那些進程在等待,并在等待什么資源。
⑤此外還有其他的GUI工具用于DB的診斷。
5、dictionary和特殊的views:
當想要獲得數據存儲的細節信息時,需要先使用analyze語句對數據進行分析統計,再查看相關的DBA_xxx和特定的views。但這些統計信息是靜 態的,只有再次運行analyze才會發生改變,而且對于較大data,用時較大。analyze獲得的數據主要在下面的視圖中:
DBA_TABLES/DBA_TAB_COLUMNS/DBA_CLUSTERS/DBA_INDEXES/INDEX_STATS/DBA_TAB_HISTOGRAMS/INDEX_HISTOGRAM
這個將會在后面詳細講述。
6、動態troubleshooting和性能視圖:
①v$ views:是建立在想x$ tables的基礎上,存儲在內存結構中,保留instance的信息,所以只要在instance處于nomount的情況即可查詢了。它們被羅列在v$fixed_table中,只有sys user可用。
②x$ tables:是動態的,數據隨時變化,并且在shutdown時被清除,在startup時重新組裝。當設置timed_statistics為true時,它們將保存時間信息。
③ systemwide statistics的收集
所有systemwide statistics的指標類型存放在v$statname中。所有指標的統計值存儲在v$sysstat中。例如:select name, class, value from v$sysstat;
一般systemwide statistics的類型為:
• Class 1 refers to general instance activity.
• Class 2 refers to redo log buffer activity.
• Class 4 refers to locking.
• Class 8 refers to database buffer cache activity.
• Class 16 refers to OS activity.
• Class 32 refers to parallelization.
• Class 64 refers to tables access.
• Class 128 refers to debugging purposes.
④SGA全局統計,可以通過查看v$SGASTAT獲得。
⑤等待事件的統計:所有可能引起等待的事件類型都存放在v$event_name中。
I) 所有的sessions的累計統計存放在v$system_event,顯示了自instance startup后所有等待事件的統計數據。
II) 在troubleshooting時,往往需要知道某些進程在等待什么資源,對此,需要查找與session相關的視圖。session的數據是從連接建立開始計算的。視圖v$mystat顯示了當前連接創建的session的統計信息。 eg. select sid, username, server from v$session where type=’USER’;
v$sesstat中顯示了所有session的每個v$sysname的統計信息。如上圖。
eg. 下面查詢pga使用大約30000 bytes的session
select username,name,value
from v$statname a, v$session b, v$sesstat c
where a.statistic# = c.statistic#
and b.sid = c.sid
and b.type = ‘USER’
and a.name = ’session pga memory’
and c.value > 30000;
III) session等待事件的統計:v$session_event顯示了自instance startup后,每個session的所有不同等待統計。v$session_wait顯示了active的session正在等待的事件或資源。
7、statspack 這個我在其他文章中介紹了,嘻嘻這里只是提一下。sg中說,可以設置dbms_job,從而每周監控DB一定時間段的性能狀態,進行對比從而定期進行tuning。
8、Oracle的等待事件:前面已經敘述了很多了,在這里要指出的是,v$session_wait中的p1text字段和 v$event_name中的parameter1字段是相對應。p2text和p3text也是一樣的。此外,動態的初始化參數 timed_statistics設置為true時,將可以取wait_time字段的value。
此外,Oracle還提供了performance manager和Oracle enterprise兩個可選包,用于性能的檢測和管理。另外,DBA還應該根據自己的需要,創建自己的腳本用于統計,例如查看不同數據文件的使用狀況的腳本。
posted on 2010-01-12 12:26 gdufo 閱讀(472) 評論(0) 編輯 收藏 所屬分類: Database (oracle, sqlser,MYSQL)