自動刪除過期的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資料統計分析
- Redis 的資料過期了就會馬上刪除麼?Redis
- RocketMQ -- 過期檔案的刪除MQ
- Redis單機資料庫持久化與過期建刪除Redis資料庫持久化
- redis 過期鍵刪除策略Redis
- kafka-- 過期檔案的刪除Kafka
- oracle rman 刪除過期的歸檔Oracle
- 探索Redis設計與實現9:資料庫redisDb與鍵過期刪除策略Redis資料庫
- oracle 刪除過期的歸檔日誌Oracle
- whk我【資料刪除】你個【資料刪除】的
- PG 自動刪除archivelogHive
- MySQL超大表刪除資料過程MySql
- 刪除資料
- vscode自動刪除行尾空格VSCode
- 配置rman來自動刪除應用過的歸檔日誌
- OGG刪除過期的trail檔案,shell實現AI
- [Redis]過期刪除和記憶體淘汰Redis記憶體
- Kafka超過保留期限資料未刪除的問題Kafka
- oracle刪除超過N天資料指令碼的方法Oracle指令碼
- [轉帖]Redis中刪除過期Key的三種策略Redis
- 刪除elasticsearch資料Elasticsearch
- indexedDB 刪除資料Index
- Laravel 資料庫裡的資料刪除Laravel資料庫
- 6.12php對資料庫的刪除和批量刪除PHP資料庫
- Win10還原系統會刪除資料嗎?Win10系統還原是否會刪除資料的解答Win10
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- 資料夾刪除不了怎麼辦?資料夾刪除不了的解決方法
- CnosDB的資料更新和刪除
- win10系統installer資料夾可以刪除嗎_win10系統installer資料夾怎麼刪除Win10
- indexedDB 刪除資料庫Index資料庫
- 2.11 刪除資料庫資料庫
- CoLab刪除資料夾
- 刪除重複資料
- MySQL刪除資料表MySql
- sql server編寫archive通用模板指令碼實現自動分批刪除資料SQLServerHive指令碼
- Redis 中的過期刪除策略和記憶體淘汰機制Redis記憶體
- 【Redis】過期鍵刪除策略和記憶體淘汰策略Redis記憶體
- 誤刪除資料了怎麼辦?小編交易誤刪除資料的恢復方法