Oracle AWR(Automatic Workload Repository)是Oracle數(shù)據(jù)庫(kù)提供的一個(gè)自我診斷和優(yōu)化工具,可以幫助數(shù)據(jù)庫(kù)管理員和開發(fā)人員更好地了解數(shù)據(jù)庫(kù)的性能瓶頸。
開啟AWR非常簡(jiǎn)單,只需要執(zhí)行以下步驟:
SQL> ALTER SYSTEM SET CONTROL_MANAGEMENT_PACK_ACCESS=DIAGNOSTIC+TUNING; SQL> ALTER SYSTEM SET STATISTICS_LEVEL=ALL;
這兩個(gè)命令是啟用AWR報(bào)告所必需的。第一個(gè)命令授權(quán)您使用AWR,第二個(gè)命令將啟用詳細(xì)的性能分析報(bào)告。
一旦開啟AWR,您可以隨時(shí)生成分析報(bào)告:
SQL> SELECT * FROM TABLE(DBMS_WORKLOAD_REPOSITORY.AWR_REPORT_HTML(1, 132, Top_N => 15));
該命令將生成包含最近132個(gè)快照的AWR報(bào)告。此外,它還將顯示數(shù)據(jù)庫(kù)中最好的15個(gè)SQL語(yǔ)句和等待事件。
默認(rèn)情況下,AWR報(bào)告在每個(gè)小時(shí)的00分,20分,40分時(shí)生成一個(gè)快照。您也可以通過(guò)以下命令更改這些設(shè)置:
SQL> BEGIN DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS( retention_in_days => 7, interval => 30, topnsql => 50, dbid => 123456 ); END;
該命令將更改快照保留設(shè)置為7天,將快照生成間隔更改為30分鐘,并將TopN SQL變量設(shè)置為50。
除了默認(rèn)生成的AWR報(bào)告外,您可以通過(guò)以下命令在特定時(shí)間生成自定義AWR報(bào)告:
SQL> EXEC DBMS_WORKLOAD_REPOSITORY.CREATE_AWR(sqldate => '2021-11-01 00:00:00', duration => 30, format => 'HTML');
該命令將創(chuàng)建一個(gè)將在2021年11月1日0點(diǎn)到0點(diǎn)30分的時(shí)間段內(nèi)生成的30分鐘AWR報(bào)告,格式為HTML。
總之,AWR是Oracle強(qiáng)大的自我優(yōu)化工具,可以幫助您發(fā)現(xiàn)數(shù)據(jù)庫(kù)性能瓶頸,調(diào)整數(shù)據(jù)庫(kù)配置和SQL語(yǔ)句,提高數(shù)據(jù)庫(kù)的性能。