接到應用側反應數據庫無法連接,登錄系統查看集群狀態:
發現集群狀態為:stuckarchiver,此狀態數據庫開啟了歸檔且歸檔日志目錄滿導致的。
核實ASM存儲,歸檔日志大小,以及歸檔位置:
經定位的確空間不足導致,對歸檔做了清理后集群狀態恢復。
分析歸檔切換頻率:
執行結果:發現該時段有異常的歸檔日志切換,導致本身充足的200GASM磁盤在短短的2小時被歸檔撐滿(一個歸檔500M),最終導致數據庫故障。
快速定位相關變更對象:
塊是oracle數據庫的最小存儲結構,數據庫中增刪改都是會記錄塊變更的,因此快速定位歸檔日志增長推薦采用塊變更視圖。
通過塊表更快速準確定位相關對象,以及相關sql讓業務側核實業務邏輯;
經查詢有一個日志表塊變更極度頻繁,每一次塊變更都基本上對應一次insert操作,數據庫默認塊大小時8k,而每次insert數據在沒有clob字段的情況下,幾乎不會超過8K,因此可以快速定位這個期間,該表進行了快速的增刪改操作。
經抓取15-16,16-17兩個時間段的awr報告發現,這兩個時間段有一條insert sql,頻繁的執行了幾千萬次,最終導致歸檔短時間撐爆ASM磁盤,導致無法正常切換歸檔的問題。
業務側找到了導致死循環的任務,將任務停止后,歸檔不再增加,系統恢復正常。但是短期的insert導致的表空間增長是勢必要解決的,但是當我們分析數據庫大對象是發現,導致短時間產生750個歸檔,近300G存儲容量的表,實際上只有24G,客戶對此有點疑問,一般情況下歸檔日志肯定記錄要大于表數據,畢竟日志記錄的要多一點,但是為了更好的比對一下比例不妨做一個簡單的實驗。
截圖:問題數據庫中大對象存儲明細
前期準備:
數據庫版本 | 11.2.0.4.0 |
歸檔狀態 | 已開啟 |
第一步:清空測試環境歸檔目錄
切換歸檔日志:保證實驗時產生的歸檔都是插入導致的
Alter system switchlogfile;
清空歸檔目錄:便于觀察歸檔大小
Crosscheckarchivelog all;
delete nopromptarchivelog until time sysdate-0.001;
用于隨機導入數據特定的數據
create or replace procedure zzj_test_proc(num1 Number) is begin For cur In 1 .. num1 Loop Insert Into zzj_test_awr Values(cur,Sysdate); If Mod(cur,100)=1 Then Commit; End If; End Loop; Commit; end zzj_test_proc; |
第三步:調用插入實驗過程觀察相關待驗證結果
1:調用存儲過程:Callzzj_test_proc(100000);
2:切換日志看歸檔日志大小
Alter system switchlogfile;
發現當前歸檔日志足足產生了41M
3:核實塊表更情況
快變更依賴dba_hist_snapshot視圖,此視圖依賴于快照信息,所以執行完后需要手工收集一下數據庫快照
手工收集快照:
begin
dbms_workload_repository.create_snapshot();
end;
/
詳細見截圖:
可以看到塊變更次數幾乎滿足于存儲過程執行的次數,再一次證明每一次插入都會對應一次塊變更的記錄更新。
核實插入十萬行數據表大小的變化:
我們可以看到表大小僅僅變化了3M,而歸檔足足增加了41M,綜上可以判斷日志產生基本上是數據的十倍以上,這也解釋了,為啥短時間歸檔日志產生了足足300G,而表空間增長卻很緩慢。
歸檔和表數據增長的明顯不成比例,當發現歸檔的過度增加是因為某一個對象導致的,而對象存儲的增長卻明顯很低,這種顯然很難從對應的官方文檔或是MOS上找到想要的解釋,而這種現象卻可以通過簡單地實驗去驗證自己的設想,顯然如上實驗清晰明了的證明了歸檔日志的數據存儲的確遠大于數據庫表記錄存儲占用的空間,在專注技術的道路上,學會實驗驗證自己的猜想很重要。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/129957.html
摘要:截止年月日,迅雷全年總營收約為億美元,較年增長。第四季度總營收約為萬美元,同比增長,環比增幅,是迅雷連續個季度營收增長以來的最高增幅,也是迅雷自年上市以來的最高紀錄。其中,云計算業務的收入增長最為迅猛。北京時間3月15日上午,迅雷正式公布了2017年第四季度及全年未經審計的財務報告。截止2017年12月31日,迅雷全年總營收約為2億美元,較2016年增長43.2%。第四季度總營收約為8240...
摘要:更新語句以上就是一條查詢的執行流程,那么接下來我們看看一條更新語句如何執行的呢語句如下張三我們來給張三修改下年齡,在實際數據庫肯定不會設置年齡這個字段的,不然要被技術負責人打的。 該文已加入筆主的開源項目——JavaGuide(一份涵蓋大部分Java程序員所需要掌握的核心知識的文檔類項目),地址:https://github.com/Snailclimb/JavaGuide 。覺得不錯...
摘要:當前人才極度緊缺,據中國人才生態白皮書研究分析,到年底,我國人工智能人才缺口將突破萬,到年,這一數字將攀升到萬。最近,已經上升到語言流行度指數的第四名。 showImg(https://upload-images.jianshu.io/upload_images/13825820-441c48554e878284.jpg?imageMogr2/auto-orient/strip%7Ci...
摘要:當前人才極度緊缺,據中國人才生態白皮書研究分析,到年底,我國人工智能人才缺口將突破萬,到年,這一數字將攀升到萬。最近,已經上升到語言流行度指數的第四名。 showImg(https://upload-images.jianshu.io/upload_images/13825820-441c48554e878284.jpg?imageMogr2/auto-orient/strip%7Ci...
閱讀 1346·2023-01-11 13:20
閱讀 1684·2023-01-11 13:20
閱讀 1132·2023-01-11 13:20
閱讀 1858·2023-01-11 13:20
閱讀 4100·2023-01-11 13:20
閱讀 2704·2023-01-11 13:20
閱讀 1385·2023-01-11 13:20
閱讀 3597·2023-01-11 13:20