Oracle 10 AWR(Automatic Workload Repository)是Oracle數(shù)據(jù)庫(kù)中用于性能調(diào)優(yōu)的一個(gè)重要工具。它可以收集數(shù)據(jù)庫(kù)實(shí)例在一段時(shí)間內(nèi)的性能統(tǒng)計(jì)信息,統(tǒng)計(jì)信息的數(shù)據(jù)包括系統(tǒng)、SQL執(zhí)行情況、系統(tǒng)事件等,讓管理員可以從多個(gè)維度了解數(shù)據(jù)庫(kù)的性能瓶頸,并針對(duì)性地進(jìn)行優(yōu)化。
AWR主要提供了兩種方式來(lái)收集性能統(tǒng)計(jì)信息:一是使用awrrpt.sql腳本來(lái)創(chuàng)建AWR報(bào)告;二是使用awrload.sql腳本來(lái)將AWR數(shù)據(jù)加載到另一個(gè)實(shí)例中。下面我們分別來(lái)介紹這兩種方式。
$ sqlplus / as sysdba SQL>@?/rdbms/admin/awrrpt.sql
通過(guò)執(zhí)行以上腳本可以生成AWR報(bào)告。這個(gè)AWR報(bào)告可以幫助我們了解數(shù)據(jù)庫(kù)的性能瓶頸及其原因。例如,在AWR報(bào)告中我們可以看到哪些SQL執(zhí)行代價(jià)過(guò)大、哪些事件占用了大部分系統(tǒng)資源、哪些等待事件占用了過(guò)多的時(shí)間等等。通過(guò)這些統(tǒng)計(jì)信息,我們可以有針對(duì)性地進(jìn)行優(yōu)化。
$ sqlplus / as sysdba SQL>@?/rdbms/admin/awrload.sql
通過(guò)執(zhí)行以上腳本,可以將從一個(gè)實(shí)例中收集到的AWR數(shù)據(jù)加載到另一個(gè)實(shí)例中。這個(gè)功能大多用于數(shù)據(jù)庫(kù)遷移、數(shù)據(jù)復(fù)制等場(chǎng)景下,以便更好地進(jìn)行性能優(yōu)化。
除了以上兩種常用方式外,AWR還可以通過(guò)修改數(shù)據(jù)庫(kù)參數(shù)來(lái)設(shè)置自動(dòng)定期收集AWR數(shù)據(jù)的間隔時(shí)間和保留時(shí)間。例如:
SQL>alter system set statistics_level=all; SQL>alter system set control_management_pack_access=diagnostic; SQL>alter system set retention_days=7;
以上代碼告訴Oracle數(shù)據(jù)庫(kù)開(kāi)啟了完整的性能統(tǒng)計(jì)信息收集功能,開(kāi)啟了完全的診斷包訪問(wèn)權(quán)限,并設(shè)置了保留時(shí)間為7天。在這7天時(shí)間內(nèi),數(shù)據(jù)庫(kù)會(huì)自動(dòng)每小時(shí)收集一次AWR數(shù)據(jù),以便管理員對(duì)數(shù)據(jù)庫(kù)的性能進(jìn)行監(jiān)控和優(yōu)化。
總之,Oracle 10 AWR是數(shù)據(jù)庫(kù)性能調(diào)優(yōu)中必不可少的一個(gè)工具。了解AWR的使用方式,對(duì)于數(shù)據(jù)庫(kù)管理員和運(yùn)維人員均非常重要。