批量獲取AWR報告的指令碼

2021-09-02 17:32:53 字數 2337 閱讀 7037

在實際的使用過程中發現,當撈取較長時間的awr報告時,例如過去24小時的awr報告(通常以1小時或者半小時為單位獲取),則需要執行24次獲取awr報告的操作(獲取awr報告的相關操作可以參見:

於是針對此批量獲取awr報告有編寫如下指令碼

首先以sysdba的方式進入資料庫

su - oracle

sqlplus / as sysdba

由於獲取的awr報告數量較多,建議新建乙個資料夾

先建立乙個資料夾

mkdir  /home/oracle/awr_dir
建立完成後,制定新建立的路徑為存放awr報告的路徑

create or replace directory awr_reports_dir as '/home/oracle/awr_dir';(其中引號內的為對應的新建的資料夾的路徑)
首先按照常規獲取awr報告的方式,獲取所需時間區間的snap id

之後,執行如下指令碼(在第三行與第四行分別輸入開始與結束時間點的snap id)

declare

-- adjust before use.

l_snap_start number := 13373(此欄位輸入開始時間的snap id);

l_snap_end number := 13397(此欄位輸入結束時間的snap id);

l_dir varchar2(50) := 'awr_reports_dir';

l_last_snap number := null;

l_dbid v$database.dbid%type;

l_instance_number v$instance.instance_number%type;

l_file utl_file.file_type;

l_file_name varchar(50);

begin

select dbid

into l_dbid

from v$database;

select instance_number

into l_instance_number

from v$instance;

for cur_snap in (select snap_id

from dba_hist_snapshot

where instance_number = l_instance_number

and snap_id between l_snap_start and l_snap_end

order by snap_id)

loop

if l_last_snap is not null then

l_file := utl_file.fopen(l_dir, 'awr_' || l_last_snap || '_' || cur_snap.snap_id || '.htm', 'w', 32767);

for cur_rep in (select output

from table(dbms_workload_repository.awr_report_html(l_dbid, l_instance_number, l_last_snap, cur_snap.snap_id)))

loop

utl_file.put_line(l_file, cur_rep.output);

end loop;

utl_file.fclose(l_file);

end if;

l_last_snap := cur_snap.snap_id;

end loop;

exception

when others then

if utl_file.is_open(l_file) then

utl_file.fclose(l_file);

end if;

raise;

end;

上述script也可直接通過pl/sql 、sql developer等工具直接執行,相比較在putty中執行,可以更顯著的看到指令碼執行的狀態

執行完上述語句後需要稍等片刻,當系統提示

pl/sql procedure successfully completed.
即代表已生成所需的awr報告

至對應的路徑下』/home/oracle/awr_dir獲取相關報告即可

建議通過winscp介面可以直接獲取相關的awr報告

oracle如何獲取awr報告

oracle database 10g 提供了乙個顯著改進的工具 自動工作負載資訊庫 awr awr 和資料庫一起安裝。資料庫裝好後,快照由乙個稱為 mmon 的新的後台程序及其從程序自動地每小時採集一次 snap 要檢視當前的設定,您可以使用下面的語句 select snap interval,r...

達夢7獲取awr報告方法

說明 dm資料庫預設關閉awr功能,需要調dbms workload repository.awr set interval 過程設定快照的間隔時間來開啟該功能。檢視快照資訊 select from sys.wrm snapshot 生成 snapshot 的 id 在 1 2 範圍內的 awr 報...

AWR以及ASH狀態報告指令碼型別

awr狀態報告指令碼型別 awrrpt.sql 獲取本例項中的awr報告 awrrpti.sql 獲取指定例項中的awr報告。比如乙個oracle安裝了多個資料庫的情況,或者乙個資料庫中集中儲存了多個例項的awr資料 awrsqrpt.sql 獲取某個sql語句的awr報告。通過sqlid來指定 a...