過期資料的定期清理機制來提高系統穩定性
最近應用系統響應速度偶爾出現緩慢,今天應用日誌報瞭如下錯誤:
2011-10-20 11:55:18,757 ERROR - 2011-10-20 11:55:18 org.apache.tomcat.util.threads.ThreadPool logFull
????: All threads (75) are currently busy, waiting. Increase maxThreads (75) or check the servlet status
從該日誌看系統慢的時候做了重複操作,導致等待的執行緒越來越多,最終達到最大執行緒數。
當系統效能出現問題時,我們很多時候考慮購買高檔裝置來解決日益猛增的業務資料和需求。但是對過期資料(所謂垃圾資料)不建立合理的歸檔清理機制,恐怕再好的硬體也是無法保證應用的穩定性。
[@more@]如下是清理歸檔過程相關的SQL指令碼的簡單模板,供大家參考:
1、確定系統中資料量猛增而影響效能的大表
2、為此建立歸檔機制,即清空某某日之前資料
定義了以上兩點後,就需要Oracle的相關命令來實現清理歸檔。如下為案例模板:
--清理歸檔之前的備份:
expdp system/system directory= EXPDIR dumpfile=test_dmpback.dmp logfile=test_dmpback.log schemas=test
或
exp system/system owner=test file=/backup/test.dmp log=/backup/test.log direct=y statistics=none buffer=20480000 recordlength=65534
--根據大表的表間關係找到需要清理歸檔的時間所對應的表的主鍵ID
select * from test1 d where d.test_id = 1268
select * from test2 c where c.test2 = 12686; -- test2_Id > 47088
--如果沒有提前準備好的Directory則新建一個:
$sqlplus / as sysdba
create directory so_dumpdir as '/backup/dmp';
grant read,write on directory DUMPDIR to system;
--對需要清理的表進行清理(只匯出今後需要用到的)
expdp system/system@ora DIRECTORY=DUMPDIR DUMPFILE=test1.dmp tables=(test.test1) content=all query="where test_id>1268" LOGFILE=exptest1_1.log
expdp system/system@xjboss1 DIRECTORY=DUMPDIR DUMPFILE=test2.dmp tables=(test.test2) content=all query="where record_id>47088" LOGFILE=test2_2.log
--為了避免匯入過程中產生表鎖衝突而無法匯入,需要將應用停止
--開始匯入剛匯出過的有用的資料
impdp system/system@ora DIRECTORY=DUMPDIR DUMPFILE=test1.dmp TABLE_EXISTS_ACTION=truncate REMAP_SCHEMA=test:test logfile=imptest.log;
impdp system/system@ora DIRECTORY=DUMPDIR DUMPFILE=test2.dmp TABLE_EXISTS_ACTION=truncate REMAP_SCHEMA=test:test logfile=imptest_2.log;
在匯入過程中可能會報ORA-39153錯誤:
ORA-39153: Table "test"."test1" exists and has been truncated. Data will be loaded but all dependent metadata will be skipped due to table_exists_action of truncate
--應用的啟用
--匯入後的檢查
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18841027/viewspace-1055845/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ZFS大大提高檔案系統的穩定性薦
- 直播系統原始碼,利用重試機制保證服務穩定性原始碼
- 淺談系統的不確定性與穩定性
- 【穩定性】從專案風險管理角度探討系統穩定性
- Filecoin激勵機制:通過Slashing保障網路穩定性
- 清理RMAN備份資料中的過期資料
- ELK日誌定期清理 ES索引資料索引
- 資料庫會話數量過多,定期清理inactive會話資料庫會話
- 如何提高nodejs程式的穩定性,健壯性NodeJS
- 薩摩耶雲建立資料安全應急處置機制可靠性和穩定性
- 7個方面影響OA系統穩定性
- 開發效率與系統穩定性雜談
- 高效能高併發系統的穩定性保障
- 公司某資料子系統定期cpu過高的診斷
- 如何保持Oracle資料庫SQL效能的穩定性Oracle資料庫SQL
- 為什麼系統極點關係到系統穩定性
- 穩定性
- 論TCP協議中的擁塞控制機制與網路穩定性TCP協議
- BGP專線如何提高網路安全與穩定性?
- Kafka 的穩定性Kafka
- 怎樣保持Oracle資料庫SQL效能的穩定性Oracle資料庫SQL
- 備份後,對資料庫的穩定性檢查資料庫
- 提高GUI自動化測試穩定性解決方案GUI
- 提高Android Support Library穩定性的三個關鍵方法Android
- 排序穩定性排序
- 透過交換機系統提高網路效率
- 穩定性領導者!阿里雲獲得信通院多項系統穩定性最高階認證阿里
- win10系統怎麼清理temp資料夾 win10系統清理temp資料夾的方法Win10
- 配置計劃任務定期清理資料庫trc檔案資料庫
- 【穩定性】穩定性建設之依賴設計
- 京東白條資料架構進化之路:要在資料的不確定性中探索架構的穩定性架構
- 用緩衝技術OSCache 提高JSP應用的效能和穩定性JS
- 淺談資料庫系統安全保護機制資料庫
- 影響資料庫效能與穩定性的幾個重要引數資料庫
- 企業如何透過熔斷降級增強服務穩定性和系統可用性?
- oracle 定期清理inactive會話Oracle會話
- .net core 到底行不行!超高穩定性和效能的客服系統:效能實測
- App穩定性測試APP