【AWR】調整AWR資料取樣時間間隔及歷史快照保留時間
1.AWR預設的取樣間隔和歷史快照保留時間
預設是保留七天,採集間隔是1小時,這個資訊可以從DBA_HIST_WR_CONTROL檢視中獲得。
sys@ora10g> col SNAP_INTERVAL for a20
sys@ora10g> col RETENTION for a20
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
3973098169 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
SNAP_INTERVAL=+00000 01:00:00.0 表示取樣間隔是1小時
RETENTION=+00007 00:00:00.0 表示取樣資料保留期限是7天
關於DBA_HIST_WR_CONTROL檢視的更多參考可參見Oracle官方文件
2.修改AWR預設的取樣間隔和歷史快照保留時間之GC方法
請按照如下的順序操作即可。
1)點選Targets
2)點選Databases,選擇需要調整的資料庫並進入
3)搜尋“Automatic Workload Repository”關鍵字(該內容屬於Administration - Database Administration - Statistics Management)進入,此時可以看到系統當前的設定情況
4)點選Edit進行修改,注意這裡System Snapshot Interval只有10 Minutes、15 Minutes、20 Minutes、30 Minutes、1Hour、2 Hours這幾種選項,多少有些侷限(命令列修改方法不受這個約束)。
3.修改AWR預設的取樣間隔和歷史快照保留時間之SQL方法
萬變不離其宗,任何能從介面上進行修改的內容都可以透過SQL調整的方法來完成。
我們即將使用到的是DBMS_WORKLOAD_REPOSITORY包中的MODIFY_SNAPSHOT_SETTINGS儲存過程。
該儲存過程的簡單描述資訊如下。
sec@ora10g> desc DBMS_WORKLOAD_REPOSITORY
…… ……
PROCEDURE MODIFY_SNAPSHOT_SETTINGS
Argument Name Type In/Out Default?
------------------------------ --------------- ------ --------
RETENTION NUMBER IN DEFAULT
INTERVAL NUMBER IN DEFAULT
TOPNSQL VARCHAR2 IN
DBID NUMBER IN DEFAULT
例如我們需要將採集間隔調整為15分鐘,取樣資料保留2天,可以做如下調整
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 15,
4 retention => 2*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
驗證修改結果
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +00000 00:15:00.0 +00002 00:00:00.0 DEFAULT
更多關於該儲存過程的說明請參考Oracle官方文件http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_wkrpos.htm#BACEHJJI。
值得注意的是:
RETENTION引數的取值範圍要求是1天到100年,即快照至少需要保留1天,最長可以保留100年;
INTERVAL引數的取值範圍要求是10分鐘到100年,即快照採集間隔最少可以是10分鐘,最長可以是100年(官方文件這裡描述的有問題,不但用詞不正確,而且給出的最長是1年也是不正確的,用詞方面的錯誤在11gR1文件中得到修改)。
1)驗證RETENTION引數的取值範圍
當RETENTION引數被賦予少於1天或超過100年的時候都會給出提示性錯誤ORA-13510,從提示資訊中也可以得到該引數的取值範圍(1440, 52560000),1440分鐘即1天, 52560000分鐘即100年。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 0.5*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 720, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 36501*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 52561440, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
2)驗證INTERVAL引數的取值範圍
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 9,
4 retention => 7*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13511: invalid INTERVAL 9, must be in the range (10, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
可見此處INTERVAL引數的取值是10分鐘到52560000分鐘(即100年),當間隔取到整100年的時候是沒有問題的。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 7*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00007 00:00:00.0 DEFAULT
4.停止AWR取樣發生的迂迴方法
我們可以將取樣時間間隔調整為最長100年,同時把取樣資料保留時間調整到最小1天的方式實現“禁用”AWR。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 1*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00001 00:00:00.0 DEFAULT
5.小結
本文透過簡單的演示給大家展示了一下調整AWR資料取樣時間間隔及歷史快照保留時間的方法。
Oracle官方文件亦存在瑕疵,盡信書不如無書。驗證Oracle官方文件正確性的最有效的工具是你的雙手。
Good luck.
secooler
10.07.18
-- The End --
預設是保留七天,採集間隔是1小時,這個資訊可以從DBA_HIST_WR_CONTROL檢視中獲得。
sys@ora10g> col SNAP_INTERVAL for a20
sys@ora10g> col RETENTION for a20
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
3973098169 +00000 01:00:00.0 +00007 00:00:00.0 DEFAULT
SNAP_INTERVAL=+00000 01:00:00.0 表示取樣間隔是1小時
RETENTION=+00007 00:00:00.0 表示取樣資料保留期限是7天
關於DBA_HIST_WR_CONTROL檢視的更多參考可參見Oracle官方文件
2.修改AWR預設的取樣間隔和歷史快照保留時間之GC方法
請按照如下的順序操作即可。
1)點選Targets
2)點選Databases,選擇需要調整的資料庫並進入
3)搜尋“Automatic Workload Repository”關鍵字(該內容屬於Administration - Database Administration - Statistics Management)進入,此時可以看到系統當前的設定情況
4)點選Edit進行修改,注意這裡System Snapshot Interval只有10 Minutes、15 Minutes、20 Minutes、30 Minutes、1Hour、2 Hours這幾種選項,多少有些侷限(命令列修改方法不受這個約束)。
3.修改AWR預設的取樣間隔和歷史快照保留時間之SQL方法
萬變不離其宗,任何能從介面上進行修改的內容都可以透過SQL調整的方法來完成。
我們即將使用到的是DBMS_WORKLOAD_REPOSITORY包中的MODIFY_SNAPSHOT_SETTINGS儲存過程。
該儲存過程的簡單描述資訊如下。
sec@ora10g> desc DBMS_WORKLOAD_REPOSITORY
…… ……
PROCEDURE MODIFY_SNAPSHOT_SETTINGS
Argument Name Type In/Out Default?
------------------------------ --------------- ------ --------
RETENTION NUMBER IN DEFAULT
INTERVAL NUMBER IN DEFAULT
TOPNSQL VARCHAR2 IN
DBID NUMBER IN DEFAULT
例如我們需要將採集間隔調整為15分鐘,取樣資料保留2天,可以做如下調整
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 15,
4 retention => 2*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
驗證修改結果
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +00000 00:15:00.0 +00002 00:00:00.0 DEFAULT
更多關於該儲存過程的說明請參考Oracle官方文件http://download.oracle.com/docs/cd/B19306_01/appdev.102/b14258/d_wkrpos.htm#BACEHJJI。
值得注意的是:
RETENTION引數的取值範圍要求是1天到100年,即快照至少需要保留1天,最長可以保留100年;
INTERVAL引數的取值範圍要求是10分鐘到100年,即快照採集間隔最少可以是10分鐘,最長可以是100年(官方文件這裡描述的有問題,不但用詞不正確,而且給出的最長是1年也是不正確的,用詞方面的錯誤在11gR1文件中得到修改)。
1)驗證RETENTION引數的取值範圍
當RETENTION引數被賦予少於1天或超過100年的時候都會給出提示性錯誤ORA-13510,從提示資訊中也可以得到該引數的取值範圍(1440, 52560000),1440分鐘即1天, 52560000分鐘即100年。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 0.5*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 720, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 60,
4 retention => 36501*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13510: invalid RETENTION 52561440, must be in the range (1440, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
2)驗證INTERVAL引數的取值範圍
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 9,
4 retention => 7*24*60);
5 END;
6 /
BEGIN
*
ERROR at line 1:
ORA-13511: invalid INTERVAL 9, must be in the range (10, 52560000)
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 85
ORA-06512: at "SYS.DBMS_WORKLOAD_REPOSITORY", line 133
ORA-06512: at line 2
可見此處INTERVAL引數的取值是10分鐘到52560000分鐘(即100年),當間隔取到整100年的時候是沒有問題的。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 7*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00007 00:00:00.0 DEFAULT
4.停止AWR取樣發生的迂迴方法
我們可以將取樣時間間隔調整為最長100年,同時把取樣資料保留時間調整到最小1天的方式實現“禁用”AWR。
sys@ora10g> BEGIN
2 DBMS_WORKLOAD_REPOSITORY.MODIFY_SNAPSHOT_SETTINGS(
3 interval => 36500*24*60,
4 retention => 1*24*60);
5 END;
6 /
PL/SQL procedure successfully completed.
sys@ora10g> select * from dba_hist_wr_control;
DBID SNAP_INTERVAL RETENTION TOPNSQL
---------- -------------------- -------------------- ----------
4134757407 +36500 00:00:00.0 +00001 00:00:00.0 DEFAULT
5.小結
本文透過簡單的演示給大家展示了一下調整AWR資料取樣時間間隔及歷史快照保留時間的方法。
Oracle官方文件亦存在瑕疵,盡信書不如無書。驗證Oracle官方文件正確性的最有效的工具是你的雙手。
Good luck.
secooler
10.07.18
-- The End --
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29674916/viewspace-2084149/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 11g修改AWR資料取樣時間間隔及歷史快照保留時間Oracle
- Oracle AWR II -- 歷史快照保留時間Oracle
- 查詢及修改awr快照收集頻率及資料保留時間
- 2 Day DBA-管理方案物件-監控和優化資料庫-修改AWR快照頻率和保留時間物件優化資料庫
- linux時間調整Linux
- 【Oracle】-【心境】【AWR】- 等待事件的基準時間Oracle事件
- 調整WebLogic的時間Web
- 系統時間的調整
- 【AWR】該怎樣清理SYSAUX表空間相關資料UX
- 【Linux-時間設定】-設定時區並調整時間Linux
- job 執行時間比排程間隔時間長
- AWR歷史資料包表工具AHR
- linux調整系統時間Linux
- flashback_transaction_query資料保留的時間
- AWR取樣資料存放位置
- PHP求時間間隔n天、周、月、年後的時間PHP
- 調整linux系統時間和時區Linux
- oracle時間間隔轉換函式Oracle函式
- [Linux] ntpdate slew模式調整時間Linux模式
- Activity Monitor log儲存時間調整
- RAC環境調整系統時間
- 定期truncate 歷史間隔分割槽INTERVAL PARTITION
- MySQL 為日期增加一個時間間隔MySql
- oracle對於時間間隔的處理Oracle
- 數字轉時間間隔格式處理
- 查詢時若時間為空,開始時間取今天的零點,結束時間取當前時間
- js計算兩個時間點時間間隔的程式碼例項JS
- 【AWR】DBA_HIST檢視檢視儲存在AWR中的歷史資料
- 調整Kali Linux的鎖屏時間Linux
- oracle 取時間Oracle
- 直播軟體搭建,當前時間、既定時間後的時間及時間比較大小
- SPM設定保留空間和保留時效
- javascript如何計算兩個日期之間的時間間隔JavaScript
- MySQL實現當前資料表的所有時間都增加或減少指定的時間間隔(推薦)MySql
- Linux調整系統時間和時區的方法Linux
- c++ 獲取當前時間周初凌晨時間戳(獲取當前時間週一凌晨時間戳)C++時間戳
- win10如何修改時間日期格式 調整時間格式和日期格式的方法Win10
- Java 獲取本地時間與網路時間Java