AMDU資料抽取案例一則
上半年遇到一起某客戶對ASM磁碟組擴容,由於擴容期間操作不當導致磁碟組被dismount,日誌如下:
通過日誌可以看到由於磁碟頭的後設資料被破壞,ASM檢測發現PST表不滿足冗餘要求後磁碟組被dismount。對於這種類似由於ASM磁碟後設資料被破壞導致磁碟組無法mount,且後設資料無法修復,需要找回ASM磁碟組中丟失的ASM檔案時可以使用Oracle提供的AMDU工具進行抽取。
AMDU 介紹
AMDU是ASM Metadata Dump Utility的縮寫,即asm後設資料匯出工具,它可以從asm磁碟中將後設資料資訊以及磁碟中的檔案直接抽取出來,並且該工具不依賴asm磁碟組的狀態,可以在asm例項關閉以及asm磁碟組dismount狀態下正常使用。當磁碟組因為某些故障無法mount後,需要恢復資料就可以使用amdu工具對asm磁碟組中的資料檔案進行搶修抽取,但需要注意的是,amdu只能將檔案從asm磁碟中抽取出來,如果檔案本身已經損壞,amdu是無法進行修復,抽取出來的檔案將依然是損壞的,像這種情況,如果需要將損壞的資料檔案中的資料找回,可以使用dul類工具直接讀取抽取出來的資料檔案找回資料。
迴歸主題
回到本次的故障處理,磁碟組已經無法mount,且難以修復,只能用AMDU將資料檔案從asm磁碟中直接抽取,因為控制檔案和引數檔案以及日誌檔案所在的磁碟組均正常,整個恢復相對比較簡單,如果控制檔案所在的磁碟組也無法mount,我們可以從資料庫alert檔案中找到資料庫控制檔案的位置,這通常是第一步:
控制檔案恢復:
control_files="+REDODG/xxxpd/controlfile/current.269.957297789"
然後通過amdu將控制檔案抽取出來:
amdu -diskstring '/dev/xxx/*' -extract REDODG.269 -noreport -nodir
上面命令相關引數的含義:
· diskstring: 使用磁碟的全路徑或者是ASM_DISKSTRING引數值
· extract: 磁碟組名.ASM檔案序號
· output:提取的輸出檔案(當前目錄下)
· noreport:不輸出amdu的執行過程
· nodir:不建立dump目錄
資料庫啟動到mount狀態:
因為alert日誌檔案中輸出的啟動資訊會包含例項引數資訊,通過對輸出的引數資訊重新編輯一個引數檔案,通過引數檔案以及控制檔案我們就可以將資料庫啟動到mount狀態。
SQL> startup nomount pfile='/orabackup/tmp/init.ora'
ORACLE instance started.
Total System Global Area 3.2068E+10 bytes
Fixed Size 2269072 bytes
Variable Size 4362076272 bytes
Database Buffers 2.7649E+10 bytes
Redo Buffers 55242752 bytes
SQL> alter database mount;
Database altered.
SQL>
獲取資料檔名稱:
此時由於資料庫已啟動到mount狀態,通過v$datafile檢視既可獲取資料檔名稱。
select name from v$datafile;
+DATADG/xxx/datafile/system.347.957297809
+DATADG/xxx/datafile/sysaux.368.957297823
+DATADG/xxx/datafile/undotbs1.316.957297837
+DATADG/xxx/datafile/xxx_large.335.957297873
...
將ASM磁碟組中資料檔案抽取到本地檔案系統:
如果資料檔案採用OMF命名格式直接使用amdu命令進行抽取即可,命令與抽取控制檔案相同,但當資料檔案命名採用+DATADG/xxx/tbs01.dbf方式,需要先抽取後設資料,在後設資料中通過資料檔案的alias找到對應的fnum在依照OMF格式檔案的抽取方式進行抽取,更詳細的介紹請參考《asm翻譯系列》。
客戶在建立資料檔案時均是採用OMF檔案管理方式,直接編輯如下資料檔案抽取命令:
amdu -diskstring '/dev/xxx/*' -extract datadg.347 -noreport -nodir
amdu -diskstring '/dev/xxx/*' -extract datadg.368 -noreport -nodir
amdu -diskstring '/dev/xxx/*' -extract datadg.316 -noreport -nodir
amdu -diskstring '/dev/xxx/*' -extract datadg.335 -noreport -nodir
抽取完成後的檔案格式預設為DATADG_347.f這樣的命令規則,由於抽取到本地後資料檔名稱已經發生變化,在資料庫mount狀態下將控制檔案中記錄的資料檔名稱進行重新命名,讓資料庫識別抽取到本地的資料檔案。
重新命名資料檔案:
alter database rename file '+DATADG/xxx/datafile/system.347.957297809' to '/orabackup/xxx/DATADG_347.f';
alter database rename file '+DATADG/xxx/datafile/sysaux.368.957297823' to '/orabackup/xxx/DATADG_368.f';
alter database rename file '+DATADG/xxxdatafile/undotbs1.316.957297837' to '/orabackup/xxx/DATADG_316.f';
...
將資料庫OPEN:
由於日誌檔案所在的磁碟組沒有出現dismount問題,日誌檔案完好,並可以正常訪問,這種情況下直接open資料庫即可。
SQL> alter database open;
Database altered.
SQL>
資料庫被正常開啟,但此時資料檔案,都儲存在本地檔案系統中,還需將資料檔案移動至asm磁碟組中,由於客戶環境已無可用的asm磁碟組,對上面問題磁碟組程式刪除重新建立後使用rman copy方式將本地檔案系統中的檔案重新移動至asm磁碟組中:
select 'backup as copy datafile ' || file_id || ' format ' || '+DATADG;' from dba_data_files;
select 'switch datafile ' || file_id || ' to copy;' from dba_data_files;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952010/viewspace-2661580/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 資料恢復:AMDU資料抽取恢復資料恢復
- 資料抽取平臺pydatax使用案例---11個庫專案使用
- 從資料集中隨機抽取一定數量的資料隨機
- Transwarp元件Trasporter工具資料抽取元件
- MySQL、Oracle後設資料抽取分析MySqlOracle
- 資料上雲,應該選擇全量抽取還是增量抽取?
- Datax離線資料抽取(MySQL--MySQL)MySql
- Datax離線資料抽取(Oracle--MySQL)OracleMySql
- Datax離線資料抽取(MySQL--Oracle)MySqlOracle
- 資料抽取中的CDC(變化資料捕獲)方式
- ETLCloud:新一代ETL資料抽取工具的定義與革新Cloud
- GoldenGate抽取Informix資料庫安裝及配置GoORM資料庫
- Oracle ASM AMDU工具的使用OracleASM
- 網頁可讀內容抽取 API 資料介面網頁API
- RestCloud ETL抽取動態庫表資料實踐RESTCloud
- 【關係抽取-R-BERT】載入資料集
- Python+pandas+matplotlib視覺化案例一則Python視覺化
- 用python客戶價值分析案例一則Python
- [資訊抽取]基於ERNIE3.0的多對多資訊抽取演算法:屬性關係抽取演算法
- 測試,ogg從歸檔日誌中抽取資料
- Linux下執行資料泵expdp和impdp命令,字元轉義案例兩則Linux字元
- 從一則案例解析js正則的String物件的replace方法使用技巧JS物件
- 編寫一個constructor來實現檔案裡面資料的隨機抽取Struct隨機
- MySQL和Oracle的後設資料抽取例項分析KRGXMySqlOracle
- Flink 實踐教程-進階(2):複雜格式資料抽取
- 陳胡:Apache SeaTunnel實現 非CDC資料抽取實踐Apache
- 資料倉儲系列之ETL中常見的增量抽取方式
- 銀行資料安全治理案例(一)——美創科技
- PHP+MySQL 千萬級資料處理案例(一)PHPMySql
- 資料分析案例--USDA食品資料庫資料庫
- 記錄一則clear重做日誌檔案的案例
- Jmeter壓則資料庫JMeter資料庫
- 如何基於日誌,同步實現資料的一致性和實時抽取?
- 從雲資料遷移服務看MySQL大表抽取模式MySql模式
- Oracle 12C ASM asmcmd amdu_extractOracleASM
- 【伺服器資料恢復】raid0資料恢復案例&raid資料回遷案例伺服器資料恢復AI
- 故障分析 | ClickHouse 叢集分散式 DDL 被阻塞案例一則分散式
- 技術分享 | MySQL 覆蓋索引最佳化案例一則MySql索引