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資料抽取恢復資料恢復
- 用oracle amdu 抽取asm磁碟組的資料檔案OracleASM
- 資料庫壞塊解決案例一則資料庫
- 一則資料庫無法重啟的案例分析資料庫
- 一則資料庫無法啟動的奇怪案例分析資料庫
- [ORACLE ASM] AMDU 恢復資料檔案OracleASM
- logminer抽取日誌案例
- 使用AMDU DUMP ASM磁碟後設資料資訊ASM
- Oracle資料庫恢復:歸檔日誌損壞案例一則Oracle資料庫
- redhat 6.5之oracle 11.2.0.4 asm例項異常抽取asm配置資訊之amdu初識之一RedhatOracleASM
- 從資料集中隨機抽取一定數量的資料隨機
- 【案例】MySQL count操作優化案例一則MySql優化
- oracle啟動案例一則Oracle
- IO優化案例一則優化
- 資料質量管理--資料抽取和清洗
- 海量資料遷移之資料抽取流程
- 資料修補一則
- data pump (資料抽取)測試
- MySQL、Oracle後設資料抽取分析MySqlOracle
- Transwarp元件Trasporter工具資料抽取元件
- 使用shell抽取html資料之二HTML
- 使用flashback query巧妙抽取指定資料
- 資料上雲,應該選擇全量抽取還是增量抽取?
- 【MySQL】Too many connections 案例一則MySql
- System State 轉儲分析案例一則
- 【MySQL】mysqldgotsignal11案例一則MySqlGo
- 巧用分割槽查詢案例一則
- Datax離線資料抽取(MySQL--MySQL)MySql
- Datax離線資料抽取(Oracle--MySQL)OracleMySql
- Datax離線資料抽取(MySQL--Oracle)MySqlOracle
- SQL Story摘錄(八)————資料抽取 (轉)SQL
- 資料抽取中的CDC(變化資料捕獲)方式
- ETLCloud:新一代ETL資料抽取工具的定義與革新Cloud
- 【MySQL】 DB 回滾崩潰案例一則MySql
- 【MySQL】mysqld got signal 11 案例一則MySqlGo
- GoldenGate新增加表進行資料抽取Go
- 資料庫cpu高處理一則資料庫
- 一次通過DB_LINK抽取資料過慢原因分析