AWR資料的匯出和匯入全過程

kuqlan發表於2011-09-17
匯出匯入AWR資料,不僅對遠端診斷有用,而且對歷史資料的對比診斷也是很有價值。例如, 最近某個SQL突然變慢,想看看他過去的這段時間該SQL的執行計劃及AWR報告,那也可以利用AWR的匯出匯入功能(前提是將每個月的AWR資料匯出後進行歸檔)。如下是匯出匯入的全過程:[@more@]

1、因為在匯出(或匯入)時,我們需要指出匯出(匯入)檔案存放路徑。因首先要建立匯出(或匯入)路徑。

SQL>connect sys/password as sysdba;

SQL>create directory dump_awr as ‘E:DBwork’;

SQL>grant read,write on directory dump_dir to system;

2、透過awrextr.sql指令碼進行匯出

利用有許可權的使用者呼叫$ORACLE_HOME/rdbms/admin/awrextr.sql指令碼,並按提示操作就可以匯出就可以了

SQL> @?/rdbms/admin/awrextr.sql

3利用有許可權的使用者呼叫$ORACLE_HOME/rdbms/admin/awrload.sql指令碼,並按提示操作就可以實現匯入。如果需要匯入,則按如下步驟執行

SQL> @?/rdbms/admin/awrload.sql

我在第一次執行時,總是報如下錯誤。經過仔細觀察發現,按提示輸入資料檔名時,一般不需要填寫字尾.dmp字樣,如E:DBworkawrdat_1737_2443_july而不是E:DBworkawrdat_1737_2443_july.dmp,如下所示:

| *** AWR Load Started ...

|

| This operation will take a few moments. The

| progress of the AWR load operation can be

| monitored in the following directory/file:

| E:DBwork

| awrdat_1737_2443_july.dmp.log

|

Exception encountered in AWR_LOAD

ORA-39001: 引數值無效

ORA-39000: 轉儲檔案說明錯誤

ORA-31640: 無法開啟要讀取的轉儲檔案 "E:DBworkawrdat_1737_2443_july.dmp.dmp"

ORA-27041:

無法開啟檔案

OSD-04002: 無法開啟檔案

O/S-Error: (OS 2) The system cannot find the file specified.

ORA-39001: 引數值無效

begin

*

第 1 行出現錯誤:

ORA-06512: 在 "SYS.DBMS_SWRF_INTERNAL", line 1208

ORA-06512: 在 line 3

begin

*

第 1 行出現錯誤:

ORA-20106: AWR tables do not exist for the 'AWR_STAGE' user

ORA-06512: 在 "SYS.DBMS_SWRF_INTERNAL", line 1733

ORA-06512: 在 line 3

... Dropping AWR_STAGE user

4、在本地作出剛匯入的AWR資料的資料庫的AWR報表,則需要呼叫$ORACLE_HOME/rdbms/admin/awrrpti.sql指令碼,按提示操作即可。

SQL> @?/rdbms/admin/awrrpti.sql

Instances in this Workload Repository schema

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

DB Id Inst Num DB Name Instance Host

------------ -------- ------------ ------------ ------------

3747980894 1 db db1 test-db1

3747980894 2 db db2 test-db2

* 1875960175 1 KUQLAN10 kuqlan10 abc123

輸入 dbid 的值: 3747980894 -----在此要選擇要剛匯入資料所對應的資料庫DBid

Using 3747980894 for database Id

輸入 inst_num 的值: 1

Using 1 for instance number

Specify the number of days of snapshots to choose from

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Entering the number of days (n) will result in the most recent

(n) days of snapshots being listed. Pressing without

specifying a number lists all completed snapshots.

輸入 num_days 的值:

….

如上所示,按提示輸入即可。

總結:

透過以上方法我們不僅克服時間的限制,也能遠端仔細看到資料庫健壯性所需的所有關鍵資料。

我在第一次測試時遇到兩個問題:

其一是資料庫沒有進入開啟狀態而mount狀態原因,匯入後製作AWR報告時無法顯示snapshot id,開啟資料庫後重新匯入問題被解決了。

其二是製作AWR報告不知存放到(比如HTML格式的)哪一個路徑底下,實際上AWR報告就在你的當前目錄下存放(即在sqlplus / as sysdba執行前的cmd提示所對應的路徑)。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1055121/,如需轉載,請註明出處,否則將追究法律責任。

相關文章