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