自動刪除過期的statspack統計資料
我們在做效能分析的時候需要出statspack報表,為了方便,我們一般使用job方式定時生成報表,但是這種方式有一定的潛在危險。如果忘記移除這個job,而statspack所在表空間沒有限制大小的話,可能會把大量佔用磁碟空間,引起資料庫或作業系統崩潰,所以我們需要定期對一些過期的統計資訊進行清除。
oracle自帶了兩個指令碼可以做這些清除工作:
$ORACLE_HOME/rdbms/admin/sptrunc.sql --對statspack涉及到的表執行trunc操作
$ORACLE_HOME/rdbms/admin/sppurge.sql --刪除執行範圍的snap_id的統計資訊
實際情況下,我們一般需要保留一段時間的statspack統計資訊,所以sptrunc.sql不適合需求。sppurge.sql是根據snap_id進行刪除,並且需要人工干預,不能滿足自動按時間刪除資料的需求。
我們可以對sptrunc.sql稍作改動,使之滿足要求。
需要改動的地方不多,列舉如下:
1、----------------------------------------
註釋 132、134行
這兩行的內容是:
prompt Using &&LoSnapId for lower bound.
prompt Using &&HiSnapId for upper bound.
註釋後的內容是:
--prompt Using &&LoSnapId for lower bound.
--prompt Using &&HiSnapId for upper bound.
2、------------------------------------------
在variable hi_snap number;這一行後、
begin
:lo_snap := &losnapid;
:hi_snap := &hisnapid;
end;
前新增如下內容(大概在138行左右)
variable delete_days number;
exec :delete_days:=7;
--delete_days表示需要刪除多少天前的資料
column losnapid new_value losnapid;
column hisnapid new_value hisnapid;
select min(snap_id) losnapid,max(snap_id) hisnapid from stats$snapshot where snap_time
修改後的內容如下:
variable lo_snap number;
variable hi_snap number;
variable delete_days number;
exec :delete_days:=7;
column losnapid new_value losnapid;
column hisnapid new_value hisnapid;
select nvl(min(snap_id),0) losnapid,nvl(max(snap_id),0) hisnapid from stats$snapshot where snap_time
begin
:lo_snap := &losnapid;
:hi_snap := &hisnapid;
end;
3、---------------------------------------------------------------------------------
在sppurge.sql最後新增
exit
退出sqlplus
修改後,可以用crontab命令定時呼叫該指令碼,實現定時清除。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/231499/viewspace-63742/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Statspack之八-刪除歷史資料
- STATSPACK清除資料時沒有刪除STATS$UNDOSTAT
- Redis 的資料過期了就會馬上刪除麼?Redis
- Redis過期刪除策略Redis
- 大量STATSPACK資料統計分析
- windows下自動刪除過期檔案的指令碼Windows指令碼
- RocketMQ -- 過期檔案的刪除MQ
- linux下自動刪除過期檔案命令Linux
- Redis單機資料庫持久化與過期建刪除Redis資料庫持久化
- redis 過期鍵刪除策略Redis
- oracle rman 刪除過期的歸檔Oracle
- kafka-- 過期檔案的刪除Kafka
- windows下刪除過期的檔案Windows
- 通過SQL儲存過程刪除過期的資料庫Bak備份檔案SQL儲存過程資料庫
- oracle 統計資訊過期判斷和自動收集Oracle
- 探索Redis設計與實現9:資料庫redisDb與鍵過期刪除策略Redis資料庫
- 【error】datatable editor刪除過期提示Error
- rman 刪除所有過期歸檔
- 手動刪除資料庫資料庫
- oracle 刪除過期的歸檔日誌Oracle
- whk我【資料刪除】你個【資料刪除】的
- 儲存系統實現-資料刪除之索引的刪除索引
- MySQL超大表刪除資料過程MySql
- 刪除指定日期內的過期檔案
- oracle手動刪除資料庫Oracle資料庫
- 手動刪除oracle資料庫Oracle資料庫
- 自動生成Statspack的指令碼指令碼
- MySQL定期自動刪除表MySql
- 配置rman來自動刪除應用過的歸檔日誌
- [Redis]過期刪除和記憶體淘汰Redis記憶體
- 刪除資料
- 刪除資料夾下SVN自動生成的檔案的一個bat方法BAT
- 通過ROWID刪除重複資料
- Win10系統F盤總是自動生成Sandbox空資料夾的刪除方法Win10
- 資料庫收縮,刪除日誌,自動收縮,資料庫分離附加資料庫
- EM資料庫重建 手動刪除資料庫資料庫
- Oracle中大批量刪除資料的方法(轉自)Oracle
- 已為資料庫映象啟動資料庫,必須刪除資料庫映象才能刪除該資料庫資料庫