ASM磁碟組ORA-15042 ORA-15096
今天跟大家分享一個ASM磁碟組損壞的案例,此案例來自於一個網友。由於是保密客戶,不能拿到資料,所以這裡只是在自己的環境中模擬此現象並給出解決方案。
從Oracle 10g中,Oracle推出ASM(自動儲存管理)功能,用於替換基於主機的儲存管理軟體,使得Oracle RAC執行不在依賴於第三方的儲存管理軟體(如hacmp,sfrac)。在10G中,ASM的功能和穩定性還不完善,並沒有被大規模使用。
但是在11G版本中,ASM已經被大規模使用,成為叢集的核心儲存管理解決方案。同時ASM這個黑匣子也逐漸的被大家認識,今天我們就給大家分享一起ASM磁碟組不能掛載的案例。
ASM磁碟組有三種冗餘方式:External Redundancy、Normal Redundancy、High Redundancy。其中的冗餘機制這裡就不過多介紹了,擁有冗餘的磁碟組就可以高枕無憂了嗎?肯定不是,冗餘的機制只能保證部分故障的解決,還不足以讓我們高枕無憂。
就如我們今天的分享案例,哪怕你有normal的冗餘方式,也只能事出無奈、束手無策,特別是在一些OLAP系統中,幾十T的資料很正常,當故障來臨時,哪怕通過備份來還原,這個時間也是無法容忍的。唯有對ASM原理足夠的瞭解,才能讓我們在故障時,通過一些非常規的手段修復。
ASM和普通的檔案系統一樣,有自己的後設資料,並且ASM的後設資料庫是可以直接通過KFED來檢視和編輯的,今天我們用到的就是PST後設資料。
我們簡單描述一下:
-
PST對於ASM非常重要,在讀取其他ASM metadata之前會先檢查PST,當mount diskgroup時,GMON程式會讀取diskgroup中所有磁碟去找到和確認PST,通過PST可以確認哪些磁碟是可以ONLINE使用的,哪些是OFFLINE的。
-
PST位於磁碟的第一個au上,但並不是每塊磁碟上都有PST。磁碟組映象的不同,PST的個數也不同,如下:
External Redundancy一般有一個PST
Normal Redundancy至多有個3個PST
High Redundancy 至多有5個PST
下面有請我們今天的主角出場:
NORMAL磁碟組中有1個failgroup意外offline(如現在市面上的一體機1個儲存節點意外重啟),在這個failgroup恢復回來重新成功online之前,另外一個failgroup中有一塊磁碟損壞了,此時悲劇就發生了,即使被offline的failgroup還原回來,也不能mount磁碟組。因為我們之前介紹的ASM重要後設資料PST認為這些盤的狀態不是可正常訪問的。
構建NORMAL冗餘磁碟組
為了便於觀察恢復效果,跟蹤某條記錄的變化,在offline primary extent所在磁碟後,更新這條資料,然後破壞其secondary extent所在磁碟,最後驗證該事務是否丟失。
這裡手動建立一張rescureora的測試表,並檢視其中一行記錄物理存放位置。
通過指令碼找到資料塊與ASM磁碟的對映關係,由於是normal冗餘,此處會看到兩副本,LXN_KFFXP為0的是primary extent在1號disk上,為1的是secondary extent在4號disk上,稍後我們就模擬offline 1號disk所在fg,並且破壞4號盤。
通過GMON日誌分析PST位置
從gmon trace可以發現,該磁碟組PST在0、2、4號磁碟上。通過kfed也可以驗證:
模擬故障現象
offline fg2
fg2為primary extent所在的failgroup,此時手動offline,模擬生產環境的伺服器關機。
SQL> ALTER DISKGROUP TEST offline disks in failgroup fg2;
Diskgroup altered.
此時gmon日誌中,會生成最新的PST資訊,如下:
更新資料
此處更新資料只是為了最後驗證資料的有效性。
手動破壞4號磁碟
這裡採用的dd命令,如果在12C中開啟afd後,dd命令會自動過濾。
[grid@rescureora1 trace]$ dd if=/dev/zero of=/dev/asm-test-diskg bs=4096 count=1 conv=notrunc
1+0 records in
1+0 records out
4096 bytes (4.1 kB) copied, 0.000306284 s, 13.4 MB/s
故障出現
磁碟組已經無法mount:
通過gmon trace觀察此時的PST分佈情況:
解決方案
檢視PST中的磁碟狀態
修改磁碟狀態
這裡將磁碟0和1的狀態值修改為127即可。
掛載磁碟組
PST修復完成,嘗試mount磁碟組:
SQL> alter diskgroup test mount force;
alter diskgroup test mount force
*
ERROR at line 1:
ORA-15032: not all alterations performed
ORA-15096: lost disk write detected
ORA-15042: ASM disk "4" is missing from group number "2"
這裡報寫丟失,跟之前的報錯已經不一樣,此時是由於磁碟組在掛載時做recover報錯,那麼很簡單,跳過recover那一步就可以。
此時報錯稍微有些不同,磁碟組在進行recover的時候報錯,checkpoint為seq=7,block=1474
NOTE: starting recovery of thread=1 ckpt=7.1474 group=2 (TEST)
NOTE: BWR validation signaled ORA-15096
Errors in file /u01/app/grid/diag/asm/+asm/+ASM/trace/+ASM_ora_4035.trc:
ORA-15096: lost disk write detected
ORA-15042: ASM disk "4" is missing from group number "2"
檢視ACD後設資料:
修改ACD,加大ckpt的seq為9:
修復ACD後設資料
修復ACD後設資料:
kfed merge /dev/asm-test-diske aun=4 blkn=0 text=acd.txt
掛載磁碟組
再次嘗試mount磁碟組,發現磁碟組掛載正常。
SQL> alter diskgroup test mount force;
Diskgroup altered.
啟動資料庫
如果在正常環境中,此時會出現資料不一致的情況,當然,如果有歸檔日誌在,那麼就可以向本案例一樣,完美的解決。
SQL> recover database;
Media recovery complete.
SQL> alter database open;
相關文章
- ASM磁碟組限制ASM
- 遷移ASM磁碟組ASM
- 【ASM】Oracle asm磁碟被格式化,如何掛載該磁碟組ASMOracle
- 【ASM】Oracle asm刪除磁碟組注意事項ASMOracle
- ASM磁碟組更換磁碟的操作方法ASM
- ASM 磁碟組的建立及擴容ASM
- ORACLE ASM磁碟組空間溢位OracleASM
- 使用udev擴充套件ASM磁碟組dev套件ASM
- ASM磁碟組擴容操作文件ASM
- Oracle ASM磁碟組擴容(AIX7.1)OracleASMAI
- 一次ASM新增新的磁碟組ASM
- Oracle RAC環境下ASM磁碟組擴容OracleASM
- ASM重新命名包含OCR/vote file的磁碟組ASM
- RAC之grid叢集安裝及ASM磁碟組配置ASM
- 遷移OCR和VotingDisk並刪除原ASM磁碟組ASM
- Oracle RAC ASM磁碟組擴容時遇到的VIP漂移OracleASM
- 基於裸裝置的ASM磁碟組擴容方案ASM
- 【ASM】ASM磁碟頭被重寫,如何修復ASM
- 從定位資料塊所在ASM磁碟到ASM strippingASM
- (grid重灌後圖形介面報錯)ASM磁碟組字元介面配置ASM字元
- asm磁碟組依賴導致資料庫自啟動報錯ASM資料庫
- 【ARCH】Oracle 判斷asm磁碟組大小,超過閾值清理指令碼OracleASM指令碼
- 在ASM磁碟組中刪除歸檔日誌報ORA-15028ASM
- ASM磁碟簡單維護,新增,刪除ASM
- Oracle RAC日常運維-ASM磁碟擴容Oracle運維ASM
- ORACLE ASM的SSD磁碟空間回收分析OracleASM
- Oracle asm磁碟損壞異常恢復OracleASM
- 【BUILD_ORACLE】使用ASMLib包搭建ASM磁碟UIOracleASM
- Oracle資料庫 ASM磁碟線上擴容Oracle資料庫ASM
- Oracle 11.2.0.4 rac for aix acfs異常環境的克隆環境ASM磁碟組掛載緩慢OracleAIASM
- 關於Oracle 10g ASM磁碟大小的限制Oracle 10gASM
- 【資料庫資料恢復】Oracle資料庫ASM磁碟組掉線如何恢復資料?資料庫資料恢復OracleASM
- ASM磁碟頭資訊損壞和修復(kfed/dd)ASM
- 【資料庫資料恢復】ASM磁碟組掉線的Oracle資料庫資料恢復案例資料庫資料恢復ASMOracle
- 從 Java 位元組碼到 ASM 實踐JavaASM
- ASM磁碟空間假裝耗盡,ORA-15041: diskgroup space exhaustedASM
- 如何檢視Oracle RAC的asm磁碟的udev對應關係OracleASMdev
- 更換ocr和votingdisk磁碟組