Oracle AWR快照管理與常見(jiàn)問(wèn)題

1、手動(dòng)創(chuàng)建Snapshots

exec dbms_workload_repository.create_snapshot();?

–或者?

BEGIN?

DBMS_WORKLOAD_REPOSITORY.CREATE_SNAPSHOT ();?

END;

2托猩、手動(dòng)刪除Snapshots

exec dbms_workload_repository.drop_snapshot_range(low_snap_id => 6770,high_snap_id => 6774,dbid => 4059638244);?

OR?

BEGIN?

dbms_workload_repository.drop_snapshot_range(low_snap_id => 6770,?

high_snap_id => 6774,?

dbid => 4059638244);?

END;

這種方法刪除是通過(guò)delete的會(huì)產(chǎn)生大量redo碧磅,建議直接刪除相關(guān)分區(qū)

3碘箍、修改快照設(shè)置

——查看快照策略?

set linesize 1000 pagesize 500?

col SNAP_INTERVAL for a20?

col RETENTION for a30?

select * from dba_hist_wr_control;

——生成修改快照策略的語(yǔ)句?

set linesize 1000 pagesize 5000?

col cmd for a200?

SELECT ‘exec DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 16*24*60,INTERVAL => 30,dbid => ’ || DBID ||?

’ );’ cmd?

FROM dba_hist_wr_control;

——修改快照策略?

BEGIN?

DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(retention => 18*24*60,?

INTERVAL => 30,?

dbid => 1328382724);?

END;?

/

4、AWR生成常用腳本

–生成單實(shí)例 AWR 報(bào)告:?

@$ORACLE_HOME/rdbms/admin/awrrpt.sql

–生成 Oracle RAC AWR 報(bào)告:?

@$ORACLE_HOME/rdbms/admin/awrgrpt.sql

–生成 RAC 環(huán)境中特定數(shù)據(jù)庫(kù)實(shí)例的 AWR 報(bào)告:?

@$ORACLE_HOME/rdbms/admin/awrrpti.sql

–生成 Oracle RAC 環(huán)境中多個(gè)數(shù)據(jù)庫(kù)實(shí)例的 AWR 報(bào)告的方法:?

@$ORACLE_HOME/rdbms/admin/awrgrpti.sql

–生成 SQL 語(yǔ)句的 AWR 報(bào)告:?

@$ORACLE_HOME/rdbms/admin/awrsqrpt.sql

–生成特定數(shù)據(jù)庫(kù)實(shí)例上某個(gè) SQL 語(yǔ)句的 AWR 報(bào)告:?

@$ORACLE_HOME/rdbms/admin/awrsqrpi.sql

–生成單實(shí)例 AWR 時(shí)段對(duì)比報(bào)告?

@$ORACLE_HOME/rdbms/admin/awrddrpt.sql

–生成 Oracle RAC AWR 時(shí)段對(duì)比報(bào)告?

@$ORACLE_HOME/rdbms/admin/awrgdrpt.sql

–生成特定數(shù)據(jù)庫(kù)實(shí)例的 AWR 時(shí)段對(duì)比報(bào)告?

@$ORACLE_HOME/rdbms/admin/awrddrpi.sql

–生成 Oracle RAC 環(huán)境下特定(多個(gè))數(shù)據(jù)庫(kù)實(shí)例的 AWR 時(shí)段對(duì)比報(bào)告?

@$ORACLE_HOME/rdbms/admin/awrgdrpi.sql

5续崖、快速收集AWR/ASH/ADDM腳本

——-快速收集AWR?

declare?

begin_time_date date := to_date(‘20141130 23:00:00’, ‘yyyymmdd hh24:mi:ss’) ;?

end_time_date date := to_date(‘20141203 18:00:00’, ‘yyyymmdd hh24:mi:ss’) ;

begin?

dbms_output.put_line(‘set linesize 2000’);?

dbms_output.put_line(‘set pagesize 50000’);?

dbms_output.put_line(‘set head off’);?

for r in (select *?

from sys.WRM$_SNAPSHOT t?

where t.begin_interval_time >begin_time_date?

and t.begin_interval_time< end_time_date?

and t.dbid=3628304518?

order by t.snap_id, t.instance_number)

loop

dbms_output.put_line('spool awrrpt_' || r.instance_number || '_' ||? ? ?

? ? ? ? ? ? ? ? ? ? to_char(r.begin_interval_time+1/24,'mmdd_hh24mi') || '_' ||to_char(r.end_interval_time+1/24,'mmdd_hh24mi') || '.html');? ? ?

dbms_output.put_line('select *? ? ?

1

2

3

4

from table?

(dbms_workload_repository.awr_report_html(’ ||?

r.dbid || ‘,’ || r.instance_number || ‘,’ ||?

r.snap_id || ‘,’ || (r.snap_id + 1) || ‘,0));’);?

dbms_output.put_line(‘spool off’);?

end loop;?

end;

———快速收集ASH?

declare?

begin_time_date date := to_date(‘20141130 23:00:00’,?

‘yyyymmdd hh24:mi:ss’);?

end_time_date date := to_date(‘20141203 13:00:00’,?

‘yyyymmdd hh24:mi:ss’);?

interval_minutes number := 60;?

begin?

dbms_output.put_line(‘set linesize 2000’);?

dbms_output.put_line(‘set pagesize 50000’);?

dbms_output.put_line(‘set head off’);?

for r in (select db.DBID,?

ins.INSTANCE_NUMBER,?

begin_time_date + interval_minutes * (lv - 1) / 1440 begin_time_date,?

begin_time_date + interval_minutes * lv / 1440,?

‘yyyymmdd hh24:mi:ss’ end_time_date,?

to_char(begin_time_date + 60 * (lv - 1) / 1440,?

‘yyyymmddhh24mi’) begin_time,?

to_char(begin_time_date + 60 * lv / 1440,?

‘yyyymmddhh24miss’) end_time?

from (select /+ no_merge/?

level lv?

from dual?

connect by level <= (end_time_date - begin_time_date) * 60 * 24 /?

interval_minutes),?

gvinstanceins,vinstanceins,vdatabase db) loop?

dbms_output.put_line(‘spool ashrpt_’ || to_char(r.instance_number) || ‘_’ ||?

r.begin_time || ‘-’ || r.end_time || ‘.html’);

dbms_output.put_line('select output from table(dbms_workload_repository.ash_report_html( ' ||? ?

? ? ? ? ? ? ? ? ? ? r.dbid || ' , ' || r.instance_number || ' , ' ||? ?

? ? ? ? ? ? ? ? ? ? 'to_date(' || '''' || r.begin_time ||? ?

? ? ? ? ? ? ? ? ? ? ''', ''yyyymmddhh24miss''' || ')' || ' , ' ||? ?

? ? ? ? ? ? ? ? ? ? 'to_date(' || '''' || r.end_time ||? ?

? ? ? ? ? ? ? ? ? ? ''', ''yyyymmddhh24miss''' || ')));');? ?

dbms_output.put_line('spool off ');? ?

1

2

3

4

5

6

7

8

9

end loop;?

end;

—————快速收集ADDM?

declare?

begin_time_date date := to_date(‘20141109 15:00:00’, ‘yyyymmdd hh24:mi:ss’) ;?

end_time_date date := to_date(‘20141109 19:00:00’, ‘yyyymmdd hh24:mi:ss’) ;

begin?

dbms_output.put_line(‘set linesize 100’);?

dbms_output.put_line(‘set pagesize 50000’);?

dbms_output.put_line(‘set head off’);?

dbms_output.put_line(‘serveroutput ON SIZE UNLIMITED ‘);?

dbms_output.put_line(‘spool addm.txt’);?

for r in (select *?

from sys.WRM$_SNAPSHOT t?

where t.begin_interval_time >=begin_time_date?

and t.begin_interval_time<= end_time_date?

order by t.snap_id, t.instance_number)

loop?

dbms_output.put_line(‘declare?

id number ;?

name varchar2(100) ;?

v_dec varchar2(200) :=’||”’addm_’||to_char(r.snap_id)||’_’||to_char(r.snap_id+1)||”’;’);?

dbms_output.put_line( ‘begin ‘) ;?

dbms_output.put_line( ‘dbms_advisor.create_task(”ADDM”,id,name,v_dec,null);’);?

dbms_output.put_line( ‘dbms_advisor.set_task_parameter(name, ‘||”’START_SNAPSHOT”,’||r.snap_id||’);’) ;?

dbms_output.put_line( ‘dbms_advisor.set_task_parameter(name, ’ ||”’END_SNAPSHOT”,’||to_char(r.snap_id+1)||’);’) ;?

dbms_output.put_line( ‘dbms_advisor.set_task_parameter(name, ‘||”’INSTANCE”,’||r.instance_number||’);’) ;?

dbms_output.put_line( ‘dbms_advisor.set_task_parameter(name, ‘||”’DB_ID”,’||r.dbid||’);’) ;?

dbms_output.put_line( ‘dbms_advisor.execute_task(name); ‘) ;?

dbms_output.put_line(‘dbms_output.put_line(‘||”’#spool addm_’ || r.instance_number || ‘_’ ||?

r.snap_id || ‘_’ || (r.snap_id + 1) || ‘.txt”);’);?

dbms_output.put_line(‘dbms_output.put_line(‘||”’#select dbms_advisor.get_task_report(”””’||’||name||”””,’||””’TEXT””,””TYPICAL””) from dual ;”);’);

dbms_output.put_line('dbms_output.put_line(''#spool off'');');?

dbms_output.put_line('end ;?

/');?

1

2

3

4

end loop;?

dbms_output.put_line(‘spool off’);?

end;

6敲街、常見(jiàn)問(wèn)題?

6.1团搞、AWR快照數(shù)據(jù)和ASH數(shù)據(jù)未正常產(chǎn)生严望,一般是由于Oracle mman和mmnl進(jìn)程異常導(dǎo)致的,可以嘗試下列方法解決

1)逻恐、重啟一下mmon的刷新?

alter system set “_swrf_mmon_flush”=false;?

alter system set “_swrf_mmon_flush”=true;

2)像吻、或者,找到mmon進(jìn)程殺掉复隆,讓數(shù)據(jù)庫(kù)自動(dòng)重啟一個(gè)新的mmon進(jìn)程拨匆,或者重啟下實(shí)例。?

ps -ef|grep mmon?

kill -9 xxxxxx

MMON負(fù)責(zé)執(zhí)行與AWR相關(guān)的任務(wù)挽拂。包括收集數(shù)據(jù)庫(kù)統(tǒng)計(jì)信息惭每,收集AWR快照,啟動(dòng)各種自動(dòng)維護(hù)作業(yè)JOB,生成超過(guò)閥值告警信息台腥。?

MMNL負(fù)責(zé)執(zhí)行與ASH相關(guān)的任務(wù)宏赘。

6.2、生成awr報(bào)告時(shí)報(bào)錯(cuò)黎侈,拋出ORA-06502: PL/SQL: 數(shù)字或值錯(cuò)誤 : 字符串緩沖區(qū)太小

ERROR:?

ORA-06502: PL/SQL: numeric or value error: character string buffer too small?

ORA-06512: at “SYS.DBMS_WORKLOAD_REPOSITORY”, line 919?

ORA-06512: at line 1

解決方法:

1察署、截?cái)鄐ql_text?

update WRHSQLTEXTsetsqltext=SUBSTR(sqltext,1,1000);commit;2、補(bǔ)丁13527323DownloadPatch135273233峻汉、Usefollowingworkaround:sqlplus/assysdba@SQLTEXTsetsqltext=SUBSTR(sqltext,1,1000);commit;2贴汪、補(bǔ)丁13527323DownloadPatch135273233、Usefollowingworkaround:sqlplus/assysdba@ORACLE_HOME/rdbms/admin/prvsawr.plb?

@$ORACLE_HOME/rdbms/admin/prvtawr.plb

6.3休吠、SYSAUX表空間中WRH$_ACTIVE_SESSION_HISTORY占用大量空間

SELECT owner,?

segment_name,?

partition_name,?

segment_type,?

bytes/1024/1024/1024 Size_GB?

FROM dba_segments?

WHERE segment_name=’WRH$_ACTIVE_SESSION_HISTORY’;

–修改參數(shù)手動(dòng)出發(fā)AWR表的新分區(qū)生成?

alter session set “_swrf_test_action” = 72;

–通過(guò)下列腳本獲取AWR分區(qū)對(duì)應(yīng)的快照ID?

set serveroutput on?

declare?

CURSOR cur_part IS?

SELECT partition_name from dba_tab_partitions?

WHERE table_name = ‘WRH$_ACTIVE_SESSION_HISTORY’;

query1 varchar2(200);?

query2 varchar2(200);

TYPE partrec IS RECORD (snapid number, dbid number);?

TYPE partlist IS TABLE OF partrec;

Outlist partlist;?

begin?

dbms_output.put_line(‘PARTITION NAME SNAP_ID DBID’);?

dbms_output.put_line(‘————————— ——- ———-‘);

for part in cur_part loop?

query1 := ‘select min(snap_id), dbid from sys.WRH$_ACTIVE_SESSION_HISTORY partition (‘||part.partition_name||’) group by dbid’;?

execute immediate query1 bulk collect into OutList;

if OutList.count > 0 then?

for i in OutList.first..OutList.last loop?

dbms_output.put_line(part.partition_name||’ Min ‘||OutList(i).snapid||’ ‘||OutList(i).dbid);?

end loop;?

end if;

query2 := ‘select max(snap_id), dbid from sys.WRH$_ACTIVE_SESSION_HISTORY partition (‘||part.partition_name||’) group by dbid’;?

execute immediate query2 bulk collect into OutList;

if OutList.count > 0 then?

for i in OutList.first..OutList.last loop?

dbms_output.put_line(part.partition_name||’ Max ‘||OutList(i).snapid||’ ‘||OutList(i).dbid);?

dbms_output.put_line(‘—’);?

end loop;?

end if;

end loop;?

end;?

/?

通過(guò)DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGE包刪除快照信息扳埂,但是會(huì)產(chǎn)生大量的redo

直接刪除相關(guān)分區(qū)更為便捷和迅速恢復(fù)業(yè)務(wù)

alter table WRHACTIVESESSIONHISTORYdroppartitionWRHACTIVESESSIONHISTORYdroppartitionWRH_ACTIVE_692952975_0;

附:申請(qǐng)阿里云服務(wù)器等產(chǎn)品時(shí),可以使用1000元阿里云代金券瘤礁,領(lǐng)取網(wǎng)址:?http://aliyun.jinre.com?

可以領(lǐng)用阿里云代金券聂喇。 申請(qǐng)阿里云服務(wù)器時(shí),都可以領(lǐng)取代金券蔚携,新用戶和老用戶都可以用希太。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市酝蜒,隨后出現(xiàn)的幾起案子誊辉,更是在濱河造成了極大的恐慌,老刑警劉巖亡脑,帶你破解...
    沈念sama閱讀 222,807評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堕澄,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡霉咨,警方通過(guò)查閱死者的電腦和手機(jī)蛙紫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)途戒,“玉大人坑傅,你說(shuō)我怎么就攤上這事∨缯” “怎么了唁毒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 169,589評(píng)論 0 363
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)星爪。 經(jīng)常有香客問(wèn)我浆西,道長(zhǎng),這世上最難降的妖魔是什么顽腾? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 60,188評(píng)論 1 300
  • 正文 為了忘掉前任近零,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘久信。我一直安慰自己猪瞬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,185評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布入篮。 她就那樣靜靜地躺著陈瘦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪潮售。 梳的紋絲不亂的頭發(fā)上痊项,一...
    開(kāi)封第一講書(shū)人閱讀 52,785評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音酥诽,去河邊找鬼鞍泉。 笑死,一個(gè)胖子當(dāng)著我的面吹牛肮帐,可吹牛的內(nèi)容都是我干的咖驮。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼训枢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼托修!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起恒界,我...
    開(kāi)封第一講書(shū)人閱讀 40,167評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤睦刃,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后十酣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涩拙,經(jīng)...
    沈念sama閱讀 46,698評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,767評(píng)論 3 343
  • 正文 我和宋清朗相戀三年耸采,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了兴泥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,912評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡虾宇,死狀恐怖搓彻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情文留,我是刑警寧澤好唯,帶...
    沈念sama閱讀 36,572評(píng)論 5 351
  • 正文 年R本政府宣布竭沫,位于F島的核電站燥翅,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜕提。R本人自食惡果不足惜森书,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,254評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧凛膏,春花似錦杨名、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,746評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至吁断,卻和暖如春趁蕊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背仔役。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,859評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工掷伙, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人又兵。 一個(gè)月前我還...
    沈念sama閱讀 49,359評(píng)論 3 379
  • 正文 我出身青樓任柜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親沛厨。 傳聞我的和親對(duì)象是個(gè)殘疾皇子宙地,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,922評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容