OracleAWR刪除歷史快照說明

2021-12-30 02:38:41 字數 4700 閱讀 8514

一. awr 概述

oracle awr(automatic workload repository) 說明

從oracle 10g 開始,oracle 推出乙個工具:awr(automatic workload repository),並建議用awr 代替9i 的statspack。

awr 實質上是乙個 oracle 的內建工具,它採集與效能相關的統計資料,並從那些統計資料中匯出效能量度,以跟蹤潛在的問題。

awr的快照由乙個mmon的後台程序及其從程序自動地每小時採集一次。為了節省空間,在oracle 10g中快照會保留7天,11g的快照保留8天,超過的會自動刪除,快照頻率和保留時間都可以由使用者修改。

awr 使用幾個表來儲存採集的統計資料,所有的表都儲存在新的名稱為 sysaux 的特定表空間中的sys模式下,並且以 wrm$_* 和 wrh$_* 的格式命名:

(1)wrm$_*類表儲存元資料資訊(如檢查的資料庫和採集的快照)

(2)wrh$_*類儲存實際採集的統計資料。

h 代表「歷史資料 (historical)」而 m 代表「元資料 (metadata)」。

在這些表上構建了幾種帶字首 dba_hist_ 的檢視,這些檢視可以用來編寫您自己的效能診斷工具。檢視的名稱直接與表相關;例如,檢視 dba_hist_sysmetric_summary 是在wrh$_sysmetric_summary 表上構建的。

二. awr 快照的刪除

2.1 為什麼要刪除awr 快照?

預設情況下,對於資料庫自身產生的awr 報告,會保留7天或8天。

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

879543530 +00008 00:00:00.0

這個是我11g的庫,顯示為8天,如果是oracle 10g,則會保留7天。

awr 快照也可以從其他的資料庫中匯入,我們這裡看一下:

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

877621333 +40150 00:00:00.0

879543530 +00008 00:00:00.0

如果是從其他庫匯入的快照,在10g以後會儲存110年(40150/365),這部分資料不會永久刪除。

--awr匯出指令碼:

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

--awr匯入指令碼:

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

另乙個很重要的原因,就是有時候自動快照不能自動收集,而手工建立快照又可以成功,對於這種問題的解決方法就是把之前的快照清空掉。

2.2 刪除awr 快照資料

2.2.1 使用dbms_workload_repository 包來刪除

2.2.1.1 刪除本機的awr 快照

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

879543530 +00008 00:00:00.0

sql> selectmin(snap_id), max(snap_id) from dba_hist_snapshot where dbid = 879543530;

min(snap_id)max(snap_id)

161 176

sql> execdbms_workload_repository.drop_snapshot_range(161, 176, 879543530)

pl/sql proceduresuccessfully completed.

sql> select *from dba_hist_snapshot where dbid = 879543530;

no rows selected

2.2.1.2 刪除其他例項的快照

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

877621333 +40150 00:00:00.0

879543530 +00008 00:00:00.0

sql> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

min(snap_id) max(snap_id)

160 192

sql> execdbms_workload_repository.drop_snapshot_range(160, 170, 877621333)

pl/sql procedure successfully completed.

sql> select min(snap_id), max(snap_id) from dba_hist_snapshot where dbid =877621333;

min(snap_id) max(snap_id)

171 192

sql>

刪除成功。

2.2.2 使用dbms_swrf_internal包來刪除

2.2.2.1 刪除其他資料庫匯入的awr

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

877621333 +40150 00:00:00.0

879543530 +00008 00:00:00.0

sql> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

min(snap_id) max(snap_id)

160 192

sql> exec dbms_swrf_internal.unregister_database(877621333)

pl/sql procedure successfully completed.

sql> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 877621333;

min(snap_id) max(snap_id)

sql> select dbid, retention fromdba_hist_wr_control;

dbid retention

879543530 +00008 00:00:00.0

sql>

dbms_swrf_internal.unregister_database 會把所有的快照直接乾掉,與我們上節中的刪除是不同的效果。

2.2.2.2 刪除本機的awr

我們之前把快照清空了,所以沒有結果:

sql> select * from dba_hist_snapshotwhere dbid = 879543530;

no rows selected

sql> executedbms_workload_repository.create_snapshot();

pl/sql procedure successfully completed.

sql> executedbms_workload_repository.create_snapshot();

pl/sql procedure successfully completed.

sql> executedbms_workload_repository.create_snapshot();

pl/sql procedure successfully completed.

sql> executedbms_workload_repository.create_snapshot();

pl/sql procedure successfully completed.

--現在又有快照了:

sql> select min(snap_id), max(snap_id)from dba_hist_snapshot where dbid = 879543530;

min(snap_id) max(snap_id)

177 180

--刪除快照:

sql> exec dbms_swrf_internal.unregister_database(879543530)

begindbms_swrf_internal.unregister_database(879543530); end;

error at line 1:

ora-13521: unregister operation on localdatabase id (879543530) not allowed

ora-06512: at"sys.dbms_swrf_internal", line 99

ora-06512: at line 1

這裡直接提示,dbms_swrf_internal.unregister_database不能對本地的資料庫使用。所以如果本地的資料庫,就只能使用dbms_workload_repository包了。

2.2.3 小結

dbms_workload_repository:

可以刪除本地和其他資料庫的快照,可以選擇不同的快照來進行刪除。

dbms_swrf_internal:

只能對其他資料庫的快照來進行操作,會把整個快照unregister掉。

怎麼刪除快照?

大家應該知道阿里雲伺服器快照自2017年3月份已經正式成為商業化服務,有時候我們已經不需要某個快照或者快照個數超出額度時,您需要刪除一部分快照釋放空間。所以今天就簡單的說說怎麼刪除快照吧。注意 1 快照刪除後,不能用任何方法恢復。請謹慎操作。2 如果快照用於製作自定義映象,需要先刪除關聯的映象,然後...

Powercli批量刪除快照

1 2 3 4 5 6 7 8 9 填寫連線相關資訊,按要求輸入vcenter esxi 伺服器ip 使用者名稱 密碼 vcenterip read host 請輸入vcenter esxi伺服器ip.domainname read host 請輸入domain name,沒有可以留空.userna...

linux刪除歷史檔案

伺服器上可能會產生很多臨時檔案,時間久了會導致伺服器的磁碟空間不足,故此可以寫個定時指令碼檔案,每天定時刪除指定目錄下的檔案。bin bash base file path home dmtsai file temp echo base file path default days 3 days 3...