Oracle Awr
About Oracle AWR
Oracle AWR is a powerful monitoring utility bundle with Oracle Database from 10g.
Oracle AWR Basic Example
http://space.itpub.net/35489/viewspace-609528
SQL> conn / AS SYSDBA SQL> @?/rdbms/admin/awrrpt.sql 輸入 report_type 的值: <enter默認(rèn)為html類型> 輸入 num_days 的值: 2 --- 現(xiàn)在到過去兩天時(shí)間內(nèi)的snap id (可以查看到). 輸入 begin_snap 的值: 2147 --- 輸入的開始及結(jié)束的snap id 對應(yīng)您要查找的出現(xiàn)問題的時(shí)間段。 輸入 end_snap 的值: 2182 輸入 report_name 的值: <enter采用默認(rèn)文件名> Report written to awrrpt_1_2177_2182.html SQL> exit下載awrrpt_1_2177_2182.html并打開查看。
Oracle AWR License
So even though your 10g/11g database automatically collects AWR data every sixty minutes and retains it for a week – you cannot legally use the Oracle supplied PL/SQL packages (i.e. DBMS_WORKLOAD_REPOSITORY), the OEM screens for AWR, ADMM and ASH, or even the AWR data dictionary views (i.e. DBA_HIST_*) if you’re not licensed. This has in fact outraged more than a few users – resulting in an “Open Letter to Oracle about AWR and Ash Licensing”.
Oracle AWR 說明
認(rèn)識AWR
Oracle 10g 開始提供了一個(gè)顯著改進(jìn)的工具:自動工作負(fù)載信息庫AWR (Automatic Workload Repository). Oracle 建議用戶用這個(gè)取代 Statspack。
AWR 是一個(gè)Oracle10g的內(nèi)置工具,它采集與性能相關(guān)的統(tǒng)計(jì)數(shù)據(jù),并從那些統(tǒng)計(jì)數(shù)據(jù)中導(dǎo)出性能量度,以跟蹤潛在的問題。與 Statspack 不同,快照由一個(gè)稱為 MMON 的新的后臺進(jìn)程及其從進(jìn)程自動地每小時(shí)采集一次(在oracle10G中引進(jìn)了兩個(gè)新的進(jìn)程:mmon和mmnl,其中MMON承擔(dān)了大部分的工作)。為了節(jié)省空間,采集的數(shù)據(jù)在 7 天后自動清除。快照頻率和保留時(shí)間都可以由用戶修改。它產(chǎn)生兩種類型的輸出:文本格式(類似于 Statspack報(bào)表的文本格式但來自于 AWR 信息庫)和默認(rèn)的 HTML 格式(擁有到部分和子部分的所有超鏈接),從而提供了非常友好的用戶報(bào)表。
AWR 用幾個(gè)表來存儲采集的性能統(tǒng)計(jì)數(shù)據(jù),所有的表都存儲在 SYSAUX 表空間中的 SYS 模式下,并且以 WRM$_*(5個(gè)) 和 WRH$_*(94個(gè))的格式名。前一種類型存儲元數(shù)據(jù)信息(如檢查的數(shù)據(jù)庫和采集的快照),后一種類型保存實(shí)際采集的統(tǒng)計(jì)數(shù)據(jù)。H代表“歷史數(shù)據(jù) (historical)”而 M 代表“元數(shù)據(jù) (metadata)”。在這些表上構(gòu)建了幾種帶前綴 [[[DBA_HIST_ 的視圖,這些視圖可以用來編寫您自己的性能診斷工具。視圖的名稱直接與表相關(guān);例如,視圖 DBA_HIST_SYSMETRIC_SUMMARY 是在WRH$_SYSMETRIC_SUMMARY 表上構(gòu)建的。要使用AWR必須設(shè)置STATISTICS_LEVEL參數(shù),共有三個(gè):BASIC, TYPICAL,ALL。如果設(shè)為BASIC將禁用許多特性,如ADDM (Automatic Database Diagnostic Monitor ADDM)自動數(shù)據(jù)庫診斷監(jiān)視器。安裝Oracle 10g后,默認(rèn)值是TYPICAL。AWR的統(tǒng)計(jì)數(shù)據(jù)默認(rèn)保留7天,并且每小時(shí)獲取一次快照。
一、 ASH(v$active_session_history)和AWR
1. 10g之前用戶的連接將產(chǎn)生會話,當(dāng)前會話記錄保存在v$session中;處于等待狀態(tài)的會話會被復(fù)制一份放在v$session_wait中。當(dāng)該連接斷開后,其原來的連接信息在v$session和v$session_wait中就會被刪除。這是10g之前的狀況。
2. v$session_wait_history與ASH若是一個(gè)普通的會話(我是指沒有大量地耗費(fèi)資源),則對于性能調(diào)整來說無足輕重。但若該會話在活動時(shí)大量占用了資源(比如:CPU,內(nèi)存,I/O等),該會話信息的丟失,將無法評測當(dāng)時(shí)的系統(tǒng)瓶頸究竟是什么。令DBA高興的是,oracle10g中保留下了v$session_wait中的這些信息。在10g中新出現(xiàn)了一個(gè)視圖:v$session_wait_history。這個(gè)視圖保存了每個(gè)活動session在v$session_wait中最近10次的等待事件(ASH缺省每一秒收集一下v$session中活動會話的情況,記錄會話等待的事件,不活動的會話不會被采樣 ,間隔時(shí)間由 _ash_sampling_interval 參數(shù)確定)。但這對于一段時(shí)期內(nèi)的數(shù)據(jù)性能狀況的監(jiān)測是遠(yuǎn)遠(yuǎn)不夠的,為了解決這個(gè)問題,在10g中還新添加了一個(gè)視圖:v$active_session_history。這就是ASH(active session history)。典型的情況下,為了診斷當(dāng)前數(shù)據(jù)庫的狀態(tài),需要最近的五到十分鐘的詳細(xì)信息。然而,由于記錄session的活動信息是很費(fèi)時(shí)間和空間的,ASH采用的策略是:保存處于等待狀態(tài)的活動session的信息,每秒從v$session_wait中采樣一次,并將采樣信息保存在內(nèi)存中(ASH的采樣數(shù)據(jù)是保存在內(nèi)存中)。
3. AWR注意,ASH的采樣數(shù)據(jù)是保存在內(nèi)存中。而分配給ASH的內(nèi)存空間是有限的,當(dāng)所分配空間占滿后,舊的記錄就會被覆蓋掉;而且數(shù)據(jù)庫重啟后,所有的這些ASH信息都會消失。這樣,對于長期檢測oracle的性能是不可能的。在Oracle10g中,提供了永久保留ASH信息的方法,這就是AWR(automatic workload repository)。
由于全部保存ASH中的信息是非常耗費(fèi)時(shí)間和空間的,AWR采用的策略是:MMON進(jìn)程每小時(shí)對ASH (v$active_session_history)進(jìn)行采樣一次,并將信息保存到磁盤中,當(dāng)ASH BUFFER滿2/3的話MMNL進(jìn)程會寫,并保留7天,7天后舊的記錄才會被覆蓋。這些采樣信息被保存在表wrh$_active_session_history中。而這個(gè)采樣頻率(1小時(shí))和保留時(shí)間(7天)是可以根據(jù)實(shí)際情況進(jìn)行調(diào)整的,這就給DBA們提供了更加有效的系統(tǒng)監(jiān)測工具。 AWR永久地保存系統(tǒng)的性能診斷信息,由SYS用戶擁有。一段時(shí)間后,你可能想清除掉這些信息;有時(shí)候?yàn)榱诵阅茉\斷,你可能需要自己定義采樣頻率來獲取系統(tǒng)快照信息。Oracle 10g在包dbms_workload_repository中提供了很多過程,通過這些過程,你可以管理快照并設(shè)定基線(baselines:用于保存指定時(shí)間段的歷史數(shù)據(jù)用于將來分析及對比 )。
4. ASH保存了系統(tǒng)最新的處于等待的會話記錄,可以用來診斷數(shù)據(jù)庫的當(dāng)前狀態(tài);而AWR中的信息最長可能有1小時(shí)的延遲,所以其采樣信息并不能用于診斷數(shù)據(jù)庫的當(dāng)前狀態(tài),但可以用來作為一段時(shí)期內(nèi)數(shù)據(jù)庫性能調(diào)整的參考。
備注: 視圖dba_hist_active_sess_history是wrh$_active_session_history和其他幾個(gè)視圖的聯(lián)合展現(xiàn),通常通過這個(gè)視圖進(jìn)行歷史數(shù)據(jù)的訪問。
二、詳細(xì)介紹 AWR
1. ASH的采集信息保存在內(nèi)存中,在舊的信息被采樣到AWR中后,可被新采集的信息覆蓋,重啟oracle后該信息被清除。分配給ASH的內(nèi)存大小可以查詢到:
SQL> select pool, name, bytes/1024/1024 From v$sgastat where name like '%ASH %';POOL NAME BYTES/1024/1024 ------------- ------------- --------------- shared pool ASH buffers 62. 其實(shí)AWR記錄的信息不僅是ASH,還可以收集到數(shù)據(jù)庫運(yùn)行的各方面統(tǒng)計(jì)信息和等待信息,用以診斷分析。
AWR的采樣方式是,以固定的時(shí)間間隔為其所有重要的統(tǒng)計(jì)信息和負(fù)載信息執(zhí)行一次采樣,并將采樣信息保存在AWR中。可以這樣說:ASH中的信息被保存到了AWR中的視圖wrh$_active_session_history中。ASH是AWR的真子集。
3. mmon進(jìn)程與mmnl進(jìn)程快照由一個(gè)稱為 MMON 的新的后臺進(jìn)程(及其從進(jìn)程)以及MMNL后臺進(jìn)程自動地每隔固定時(shí)間采樣一次。我們先來看一下這兩個(gè)新增加的后臺進(jìn)程的介紹:
MMON進(jìn)程負(fù)責(zé)執(zhí)行多種和管理相關(guān)(manageability-related)的后臺任務(wù),例如:
當(dāng)某個(gè)測量值(metrics)超過了預(yù)設(shè)的限定值(threshold value)后提交警告 創(chuàng)建新的 MMON 隸屬進(jìn)程(MMON slave process)來進(jìn)行快照(snapshot) 捕獲最近修改過的 SQL 對象的統(tǒng)計(jì)信息
MMNL進(jìn)程負(fù)責(zé)執(zhí)行輕量級的且頻率較高的和可管理性相關(guān)的后臺任務(wù),例如捕獲會話歷史信息,測量值計(jì)算等。AWR的采樣工作由MMON進(jìn)程每個(gè)1小時(shí)執(zhí)行一次,ASH信息同樣會被采樣寫出到AWR負(fù)載庫中。雖然ASH buffer被設(shè)計(jì)為保留1小時(shí)的信息,但很多時(shí)候這個(gè)內(nèi)存是不夠的,當(dāng)ASH buffer寫滿后,另外一個(gè)后臺進(jìn)程MMNL將會主動將ASH信息寫出。
4. SYSAUX表空間這些采樣數(shù)據(jù)都存儲在SYSAUX表空間中,并且以WRM$_* 和 WRH$_*的格式命名。前一種類型存儲元數(shù)據(jù)信息(如檢查的數(shù)據(jù)庫和采集的快照),后一種類型保存實(shí)際采集的統(tǒng)計(jì)數(shù)據(jù)。
SQL> select table_name from dba_tables where table_name like 'WRM$%';TABLE_NAME ----------------------- WRM$_WR_CONTROL WRM$_SNAP_ERROR WRM$_SNAPSHOT WRM$_DATABASE_INSTANCE WRM$_BASELINE當(dāng)SYSAUX表空間滿后,AWR將自動覆蓋掉舊的信息,并在警告日志中記錄一條相關(guān)信息:
ORA-1688: unable to extend table SYS.WRH$_ACTIVE_SESSION_HISTORY partition WRH$_ACTIVE_3533490838_1522 by 128 in tablespace SYSAUX
5. 采樣頻率和保留時(shí)間可以通過查詢視圖dba_hist_wr_control或(wrm$_wr_control)來查詢AWR的采樣頻率和保留時(shí)間。默認(rèn)為每1小時(shí)采樣一次,采樣信息保留時(shí)間為7天。
SQL> select * from dba_hist_wr_control;DBID SNAP_INTERVAL RETENTION TOPNSQL ---- ------------- ----------- ---------- 1148 +00000 00:1 +00007 00:0 DEFAULTSQL> select DBID, SNAP_INTERVAL, SNAPINT_NUM, RETENTION from wrm$_wr_control;DBID SNAP_INTERVAL SNAPINT_NUM RETENTION ---------- ------------------ ----------- -------------------- 1160732652 +00000 01:00:00.0 3600 +00007 00:00:00.0-- 設(shè)置每半小時(shí)一次,并且保留5天 。 SQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);6. 采樣數(shù)據(jù)量由于數(shù)據(jù)量巨大,把所有ASH數(shù)據(jù)寫到磁盤上是不能接受的。一般是在寫到磁盤的時(shí)候過濾這個(gè)數(shù)據(jù),寫出的數(shù)據(jù)占采樣數(shù)據(jù)的10%,寫出時(shí)通過direct-path insert完成,盡量減少日志生成,從而最小化數(shù)據(jù)庫性能的影響。
7. 初始化參數(shù)statistics_level, AWR的行為受到參數(shù)STATISTICS_LEVEL的影響。這個(gè)參數(shù)有三個(gè)值:
- BASIC: awr統(tǒng)計(jì)的計(jì)算和衍生值關(guān)閉.只收集少量的數(shù)據(jù)庫統(tǒng)計(jì)信息.
- TYPICAL: 默認(rèn)值.只有部分的統(tǒng)計(jì)收集.他們代表需要的典型監(jiān)控oracle數(shù)據(jù)庫的行為.
- ALL : 所有可能的統(tǒng)計(jì)都被捕捉. 并且有操作系統(tǒng)的一些信息.這個(gè)級別的捕捉應(yīng)該在很少的情況下,比如你要更多的sql診斷信息的時(shí)候才使用.
Oracle AWR Views
The following workload repository views are available:
V$ACTIVE_SESSION_HISTORY - Displays the active session history (ASH) sampled every second.
V$METRIC - Displays metric information.
V$METRICNAME - Displays the metrics associated with each metric group.
V$METRIC_HISTORY - Displays historical metrics.
V$METRICGROUP - Displays all metrics groups.
DBA_HIST_ACTIVE_SESS_HISTORY - Displays the history contents of the active session history.
DBA_HIST_BASELINE - Displays baseline information.
DBA_HIST_DATABASE_INSTANCE - Displays database environment information.
DBA_HIST_SNAPSHOT - Displays snapshot information.
DBA_HIST_SQL_PLAN - Displays SQL execution plans.
DBA_HIST_WR_CONTROL - Displays AWR settings.
三、使用AWR
AWR由ORACLE自動產(chǎn)生,不過也可以通過DBMS_WORKLOAD_REPOSITORY包來手工創(chuàng)建、刪除和修改。可以使用desc命令查看該包中的過程。下面只介紹幾個(gè)常用的:
1.手工創(chuàng)建一個(gè)快照
SQL> select count(*) from wrh$_active_session_history;COUNT(*) ----------317 SQL> begin2 dbms_workload_repository.create_snapshot();3 end;4 /PL/SQL 過程已成功完成。 SQL> select count(*) from wrh$_active_session_history;COUNT(*) ----------3202.手工刪除指定范圍的快照
SQL> select * from wrh$_active_session_history where snap_id = 96;SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME ---------- ---------- --------------- ---------- ----------------------------96 1160732652 1 236930 06-10月-07 11.26.04.562 上午96 1160732652 1 236930 06-10月-07 11.26.04.562 上午96 1160732652 1 236930 06-10月-07 11.26.04.562 上午SQL> begin2 dbms_workload_repository.drop_snapshot_range(low_snap_id => 96, high_snap_id => 96, dbid => 1160732652);3 end;4 / PL/SQL 過程已成功完成。 SQL> select * from wrh$_active_session_history where snap_id = 96; 未選定行3.修改采集時(shí)間和統(tǒng)計(jì)信息保留時(shí)間
PROCEDURE MODIFY_SNAPSHOT_SETTINGS 參數(shù)名稱 類型 輸入/輸出默認(rèn)值? ------------------------------ ----------------------- ------ -------- RETENTION NUMBER IN DEFAULT INTERVAL NUMBER IN DEFAULT TOPNSQL NUMBER IN DEFAULT DBID NUMBER IN DEFAULT通過修改retention參數(shù)可以修改awr信息的保留期限。默認(rèn)的是七天,最小的值是一天。如果把retention設(shè)置為零,自動清除就關(guān)閉了.如果awr發(fā)現(xiàn)sysaux空間不夠,它通過刪除那些最老部分的快照來重新使用這些空間.同時(shí),也會給dba發(fā)一條警告,告訴sysaux空間不夠了(在alert log中).通過修改interval參數(shù)可以修改awr信息的采樣頻率。最小的值是10分鐘,默認(rèn)的是60分鐘.典型的值是10,20,30,60,120等等。把interval設(shè)為0則關(guān)閉自動捕捉快照.如將收集間隔時(shí)間改為30 分鐘一次。并且保留5天時(shí)間(注:單位都是為分鐘):
SQL> select *from dba_hist_wr_control;DBID SNAP_INTERVAL RETENTION TOPNSQL ---------- ------------------ -------------------------- ----------- 1160732652 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULTSQL> exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60); PL/SQL 過程已成功完成。SQL> SELECT *from dba_hist_wr_control;DBID SNAP_INTERVAL RETENTION TOPNSQL ---------- ------------------- ------------------------- ----------- 1160732652 +00000 00:30:00.0 +00005 00:00:00.0 DEFAULTSQL>4.設(shè)置基線
基線(baseline)是一種機(jī)制,這樣你可以在重要時(shí)間的快照信息集做標(biāo)記。一個(gè)基線定義在一對快照之間,快照通過他們的快照序列號識別.每個(gè)基線有且只有一對快照。一次典型的性能調(diào)整實(shí)踐從采集量度的基準(zhǔn)線集合、作出改動、然后采集另一個(gè)基準(zhǔn)線集合開始。可以比較這兩個(gè)集合來檢查所作的改動的效果。在 AWR 中,對現(xiàn)有的已采集的快照可以執(zhí)行相同類型的比較。
假定一個(gè)名稱為 apply_interest 的高度資源密集的進(jìn)程在下午 1:00 到 3:00 之間運(yùn)行,對應(yīng)快照 ID 95 到 98。我們可以為這些快照定義一個(gè)名稱為apply_interest_1 的基準(zhǔn)線:
在一些調(diào)整步驟之后,我們可以創(chuàng)建另一個(gè)基準(zhǔn)線 — 假設(shè)名稱為 apply_interest_2,然后只為那些與這兩條基準(zhǔn)線相關(guān)的快照比較量度。
SQL> exec dbms_workload_repository.create_baseline(92, 94, 'apply_interest_2');
PL/SQL 過程已成功完成。
像這樣把快照分隔在僅僅幾個(gè)集合中有助于研究調(diào)整對于性能量度的影響。您可以在分析之后使用 drop_baseline() 來刪除基準(zhǔn)線;快照將保留(也可級聯(lián)刪除)。 此外,當(dāng)清除例程開始刪除舊的快照時(shí),與基準(zhǔn)線相關(guān)的快照不會被清除,從而允許進(jìn)行進(jìn)一步的分析。
5.刪除基線
如果要?jiǎng)h除一個(gè)基準(zhǔn)線:
SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_1', cascade=>false);PL/SQL 過程已成功完成。SQL> select *from wrh$_active_session_history where snap_id in (95,96,97,98);SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME ---------- ---------- --------------- ---------- -------------------------------95 1160732652 1 235360 06-10月-07 10.56.29.872 上午95 1160732652 1 235230 06-10月-07 10.54.19.857 上午95 1160732652 1 233130 06-10月-07 10.19.19.478 上午95 1160732652 1 232830 06-10月-07 10.14.18.859 上午95 1160732652 1 232250 06-10月-07 10.04.38.481 上午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午97 1160732652 1 238600 06-10月-07 12.33.08.420 下午SNAP_ID DBID INSTANCE_NUMBER SAMPLE_ID SAMPLE_TIME ---------- ---------- --------------- ---------- -------------------------------97 1160732652 1 238420 06-10月-07 11.50.55.686 上午97 1160732652 1 238230 06-10月-07 11.47.45.687 上午98 1160732652 1 239140 06-10月-07 01.42.00.976 下午98 1160732652 1 239140 06-10月-07 01.42.00.976 下午98 1160732652 1 239140 06-10月-07 01.42.00.976 下午98 1160732652 1 239140 06-10月-07 01.42.00.976 下午98 1160732652 1 239140 06-10月-07 01.42.00.976 下午98 1160732652 1 239130 06-10月-07 01.27.04.161 下午98 1160732652 1 239130 06-10月-07 01.27.04.161 下午98 1160732652 1 239130 06-10月-07 01.27.04.161 下午已選擇21行。SQL> exec dbms_workload_repository.drop_baseline(baseline_name=>'apply_interest_2', cascade=>true);PL/SQL 過程已成功完成。SQL> select *from wrh$_active_session_history where snap_id in (92,93,94); 未選定行SQL>Using Oracle AWR
oracle10g awr取得快照
SQL> SQLPLUS / AS SYSDBA SQL> exec dbms_workload_repository.create_snapshot SQL> exec:snap_id:=dbms_workload_repository.create_snapshot SQL> var snap_id number SQL> print snap_id SQL> @?/rdbms/admin/awrrpt.sql查看當(dāng)前的AWR保存策略
select * from dba_hist_wr_control; DBID,SNAP_INTERVAL,RETENTION,TOPNSQL 860524039,+00 01:00:00.000000,+07 00:00:00.000000,DEFAULT以上結(jié)果表示,每小時(shí)產(chǎn)生一個(gè)SNAPSHOT,保留7天
調(diào)整AWR配置
AWR配置都是通過dbms_workload_repository包進(jìn)行配置
1調(diào)整AWR產(chǎn)生snapshot的頻率和保留策略,如:如將收集間隔時(shí)間改為30 分鐘一次。并且保留5天時(shí)間(注:單位都是為分鐘):
exec dbms_workload_repository.modify_snapshot_settings(interval=>30, retention=>5*24*60);
2關(guān)閉AWR,把interval設(shè)為0則關(guān)閉自動捕捉快照
3手工創(chuàng)建一個(gè)快照
exec DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();
4 查看快照
select * from sys.wrh$_active_session_history
5手工刪除指定范圍的快照
exec WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE(low_snap_id => 22, high_snap_id => 32, dbid => 3310949047);
6創(chuàng)建baseline
exec dbms_workload_repository.create_baseline (56,59,'apply_interest_1')
7刪除baseline
exec DBMS_WORKLOAD_REPOSITORY.DROP_BASELINE(baseline_name => ' apply_interest_1', cascade => FALSE);
3.生產(chǎn)AWR報(bào)告
$ORACLE_HOME/rdbms/admin/awrrpt.sql
停止AWR的方法
Many Ways to Disable AWR:
Download Meta-Link script dbms_awr.plb, compile this package, then execute the PL/SQL package dbms_awr.disable_awr() [see metalink note 436386.1].
Set your init.ora parameter STATISTICS_LEVEL = BASIC
Execute the Oracle provided PL/SQL package: dbms_workload_repository.modify_snapshot_settings(interval=>0)
Execute the Oracle provided PL/SQL package: dbms_scheduler.disable('GATHER_STATS_JOB')
You can use Toad for #3: Main Menu->Database->Monitor->ADDM/AWR Reports screen, choose the Snapshot Management tab, set the interval to all zeroes, and then press the green checkmark in upper left corner to commit the change.
You can use Toad for #4: Main Menu->Schema Browser, choose the Sched. Job tab and disable the GATHER_STATS_JOB job.
You can use OEM for #4: Main Menu->Workload->Automatic Workload Repository, select the “Edit” button and then select the last radio group item labeled: Turn off Snapshot Collection, finally press OK
You can use OEM for #5: Main Menu->Scheduler->Jobs, select the data grid row for GATHER_STATS_JOB, choose the disable drop-down action, then finally press OK
Create your own database creation scripts (i.e. do not use DBCA) and make sure not to run the CATAWRTB.sql script [Note – Oracle upgrade process may undo this]
Run the CATNOAWR.sql script to drop the AWR Repository tables [Note – Oracle upgrade process may undo this]
ORACLE 10g/11g重建AWR
Reference:
http://www.2cto.com/database/201203/123990.html
如果在日常工作中遇見了AWR數(shù)據(jù)量太大,可以通過如下方式做以清除:
SQL> select distinct dbid,db_name,instance_name from wrm$_database_instance; DBID DB_NAME INSTANCE_NAME ---------- --------- ---------------- 2691876695 MYDB mydb -- 運(yùn)行如下腳本 SQL> @?\rdbms\admin\catnoawr.sql-- 不重啟的話,清空共享池 alter system flush shared_pool;-- 運(yùn)行重建AWR腳本: SQL> @?\rdbms\admin\catawrtb.sql-- recompile SQL> @?\rdbms\admin\utlrp.sqlORACLE 11g需要需要運(yùn)行如下腳本:
SQL> @?\rdbms\admin\execsvrm.sql測試
SQL> exec dbms_workload_repository.create_snapshot;如果不對存儲過程進(jìn)行重新編譯,執(zhí)行快照過程會提示如下問題:
SQL> exec dbms_workload_repository.create_snapshot; BEGIN dbms_workload_repository.create_snapshot; END;* 第 1 行出現(xiàn)錯(cuò)誤: ORA-13516: AWR 操作失敗: AWR Schema not initialized ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 99 ORA-06512: 在 "SYS.DBMS_WORKLOAD_REPOSITORY", line 122 ORA-06512: 在 line 1 在重新編譯了存儲過程后,存儲過程運(yùn)行正常隔5分鐘后,再次運(yùn)行: SQL> exec dbms_workload_repository.create_snapshot;PL/SQL 過程已成功完成。 SQL> @?/rdbms/admin/awrrpt.sql注意在RAC環(huán)境下的話,需要取消集群參數(shù)后,待執(zhí)行完成后再次修改過來:
alter system set cluster_database = false scope = spfile;當(dāng)然在重建后我們需要進(jìn)一步檢查下相關(guān)對象是否存在異常,對于存在異常的對象需要重新編譯:
spool objects.lst set pagesize500 set linesize 100 select substr(comp_name,1,40) comp_name, status, substr(version,1,10) version from dba_registry order by comp_name; select substr(object_name,1,40) object_name,substr(owner,1,15) owner,object_type from dba_objects where status='INVALID' order by owner,object_type; select owner,object_type,count(*) from dba_objects where status='INVALID' group by owner,object_type order by owner,object_type ; spool off alter package <schema name>.<package_name> compile; alter package <schema name>.<package_name> compile body; alter view <schema name>.<view_name> compile; alter trigger <schema).<trigger_name> compile;總結(jié)
以上是生活随笔為你收集整理的Oracle Awr的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 归档日志满导致ORA-13516错误,A
- 下一篇: ORACLE 11g R2 RAC群集堆