關於閃回區溢位導致的資料hang(r11筆記第12天)
對於Oracle資料庫的閃回區的設定,之前和一個同事和討論過,總體來說有一些不同的意見。
首先這個閃回區是一個邏輯的概念,閃回區的大小不會嚴格依賴於磁碟空間的情況,比如磁碟空間目前剩餘100G,但是你設定閃回區為200G是沒有問題的。
如此一來,和只使用歸檔引數想比,這個閃回區似乎有一點問題,總體來說閃回區的管理還是比較方便的,可以監控管理閃回區中的歸檔,閃回日誌,備份等的大小。
使用的檢視為v$flash_recovery_area_usage,在11g做了簡化,為v$recovery_area_usage
一個檢視閃回區的使用率的結果如下:
select *from v$flash_recovery_area_usage;
FILE_TYPE PERCENT_SPACE_USED PERCENT_SPACE_RECLAIMABLE NUMBER_OF_FILES
----------------------- ------------------ ------------------------- ---------------
CONTROL FILE 0 0 0
REDO LOG .18 0 2
ARCHIVED LOG 40.09 0 320
BACKUP PIECE 0 0 0
IMAGE COPY 0 0 0
FLASHBACK LOG 59.08 0 366
FOREIGN ARCHIVED LOG 0 0 0閃回區的使用有幾個地方比較糾結,那就是關於閃回hang的問題。
簡單來說,可以歸為以下幾類。
首先是閃回區空間設定大於磁碟實際空間大小,這種情況下,竟然閃回區可用,但是磁碟空間不足,這種情況下就會造成歸檔無法生成或切換,影響會很大,當然系統的監控是必要的,如果疏忽了,那麼資料庫層面的這一道防線就會因為閃回區的這種設定而被突破。
第二種情況下是閃回區的大小溢位,比如設定閃回區大小為100G,剛好達到了臨界值,這個時候很可能出現兩種情況,一種是無響應,表現為登入,登出都會完全沒有響應,資料庫直接被卡住,這種情況下很可能是有線上的事務在執行。而另外一類則是非常經典的錯誤。
SQL> conn test/xxxx
ERROR:
ORA-00257: archiver error. Connect internal only, until freed.
想必這個問題大家都見過很多次了,這個問題其實相比資料庫hang的影響要略微小一些。至少應用連不進來,而第一種會造成的結果是,如果應用不斷嘗試連線,但是無響應,就會短時間內造成大量會話阻塞,然後消耗系統資源殆盡。如果有的伺服器抗不了瞬間的壓力,還可能瞬間當機。
第二類問題其實還算是相對溫和的,登入不了,連線直接被拒絕。
解決方法其實就很簡單了,一種是擴大閃回區,另外一種是刪除一些不需要的歸檔檔案等,釋放閃回區的空間。
當然還有一種場景會把這個問題放大,那就是核心系統一旦出現這類問題,這個影響就會非常大,這句話怎麼理解,如果因為閃回區過小導致了資料庫hang的問題,在5分鐘的時間內是完全沒有響應的,儘管你使用sysdba修改了閃回區大小,調整了空間,但是問題會短時間內(預設5分鐘)記憶體在,如果碰上這樣的情況,絕對會讓人格外抓狂,在我的職業生涯中還真碰到過。在很緊急的關頭,你的第一反應和冷靜處理就絕對反映出了你真正的技能和知識儲備。說不緊張那都是騙人的,只能讓自己的心裡平復一下,想明白該怎麼做,避免錯上加錯的操作讓問題向另外一個方向走去。
這個5分鐘是怎麼得來的,我是專門做了下這類測試,開啟了多個視窗,加上人工的操作延時,抓取到的時間戳如下:
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 14 17:52:18 2016
SQL*Plus: Release 11.2.0.4.0 Production on Wed Dec 14 17:57:38 2016從這個結果可以基本看出是一個5分鐘的頻率,因為有手工的延遲問題。
當然這只是猜測,有什麼其他的方式來論證呢,我首先檢視了資料庫的隱含引數。發現還真有幾個隱含引數的設定是300秒的。
_hang_ignored_hangs_interval
_flashback_max_standby_sync_span
_dbwr_scan_interval
_hang_monitor_archiving_related_hang_interval
當然要做嚴謹的測試,還是很有難度,自己反覆嘗試沒有得到一個確鑿的證據指向這幾個引數會直接影響Hang的問題,那還有什麼問題呢。
還有一個就是資料庫的歸檔引數,歸檔引數有一個屬性是reopen,預設是300秒。
自己測試了幾個場景,有的表現要好一些,有的則達不到預期效果,所以這個引數作為備選。
還有一個引數是,這個引數還是值得好好琢磨一番,但是目前來看,經過大量的測試沒有完全驗證。
所以經過我的一番測試,達到臨界值的情況下,有些場景中以上的隱含引數和歸檔引數設定都會有一定的影響,但是沒有產生立竿見影的效果。
這個測試還要繼續進行,大家有什麼更好的建議也希望一併指出。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23718752/viewspace-2130620/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個閃回區報警的資料恢復(r11筆記第63天)資料恢復筆記
- 閃回資料庫不是“萬金油”(r11筆記第73天)資料庫筆記
- 閃回原理測試(二)(r11筆記第23天)筆記
- 閃回區報警引發的效能問題分析(r11筆記第11天)筆記
- Oracle閃回原理-Logminer解讀redo(r11筆記第17天)Oracle筆記
- 關於責任和業務(r11筆記第60天)筆記
- insert導致的效能問題大排查(r11筆記第26天)筆記
- Oracle閃回原理測試(三)(r12筆記第16天)Oracle筆記
- 閃回(關於閃回資料庫)資料庫
- Oracle 12c資料字典的小問題(r11筆記第49天)Oracle筆記
- flashback_area 區域溢位導致資料庫當機資料庫
- 關於ssh命令的幾個使用小技巧(r11筆記第27天)筆記
- 兩個資料庫的問題(r11筆記第4天)資料庫筆記
- 返京途中(r11筆記第61天)筆記
- Oracle 12cR2初體驗(r11筆記第91天)Oracle筆記
- 資料庫收縮資料檔案的嘗試(三)(r11筆記第22天)資料庫筆記
- 我的女兒二三事(r11筆記第87天)筆記
- 物化檢視實現的特殊資料複製(r11筆記第42天)筆記
- 一個關於資料庫閃回區問題的處理資料庫
- 需要了解的pssh(r11筆記第28天)筆記
- 我眼中的寶雞景點(r11筆記第53天)筆記
- 我眼中的兵馬俑(r11筆記第55天)筆記
- MySQL中的undo截斷(r11筆記第89天)MySql筆記
- 關於金錢的幾個小故事(r12筆記第8天)筆記
- 閃回(關於閃回查詢)
- 記一次記憶體溢位導致的生產事故記憶體溢位
- MySQL中的半同步複製(r11筆記第65天)MySql筆記
- 關於 PHP 記憶體溢位的思考PHP記憶體溢位
- Oracle 12c中DBCA搭建備庫體驗(r11筆記第92天)Oracle筆記
- ORA-00257 archiver error--資料閃回區滿導致無法歸檔HiveError
- 關於oracle閃回資料歸檔的總結Oracle
- 出去吃頓飯容易嘛(r11筆記第5天)筆記
- MySQL 5.7 General Tablespace學習(r11筆記第34天)MySql筆記
- 德魯克人生五問(r11筆記第71天)筆記
- MySQL Online DDL(二)(r11筆記第88天)MySql筆記
- 一次快速閃回區滿導致資料庫不能啟動的解決過程資料庫
- 三十而立,立的是什麼?(r11筆記第70天)筆記
- 【FLASHBACK】關於閃回資料庫的一點說明資料庫