溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解AMDU數(shù)據抽取

發(fā)布時間:2021-11-08 15:26:42 來源:億速云 閱讀:152 作者:iii 欄目:關系型數(shù)據庫

這篇文章主要介紹“怎么理解AMDU數(shù)據抽取”,在日常操作中,相信很多人在怎么理解AMDU數(shù)據抽取問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么理解AMDU數(shù)據抽取”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

上半年遇到一起某客戶對ASM磁盤組擴容,由于擴容期間操作不當導致磁盤組被dismount,日志如下:

怎么理解AMDU數(shù)據抽取

通過日志可以看到由于磁盤頭的元數(shù)據被破壞,ASM檢測發(fā)現(xiàn)PST表不滿足冗余要求后磁盤組被dismount。對于這種類似由于ASM磁盤元數(shù)據被破壞導致磁盤組無法mount,且元數(shù)據無法修復,需要找回ASM磁盤組中丟失的ASM文件時可以使用Oracle提供的AMDU工具進行抽取。

AMDU介紹

AMDU是ASM Metadata Dump Utility的縮寫,即asm元數(shù)據導出工具,它可以從asm磁盤中將元數(shù)據信息以及磁盤中的文件直接抽取出來,并且該工具不依賴asm磁盤組的狀態(tài),可以在asm實例關閉以及asm磁盤組dismount狀態(tài)下正常使用。當磁盤組因為某些故障無法mount后,需要恢復數(shù)據就可以使用amdu工具對asm磁盤組中的數(shù)據文件進行搶修抽取,但需要注意的是,amdu只能將文件從asm磁盤中抽取出來,如果文件本身已經損壞,amdu是無法進行修復,抽取出來的文件將依然是損壞的,像這種情況,如果需要將損壞的數(shù)據文件中的數(shù)據找回,可以使用dul類工具直接讀取抽取出來的數(shù)據文件找回數(shù)據。

回歸主題

回到本次的故障處理,磁盤組已經無法mount,且難以修復,只能用AMDU將數(shù)據文件從asm磁盤中直接抽取,因為控制文件和參數(shù)文件以及日志文件所在的磁盤組均正常,整個恢復相對比較簡單,如果控制文件所在的磁盤組也無法mount,我們可以從數(shù)據庫alert文件中找到數(shù)據庫控制文件的位置,這通常是第一步:

控制文件恢復:

control_files="+REDODG/xxxpd/controlfile/current.269.957297789"

然后通過amdu將控制文件抽取出來:

amdu -diskstring '/dev/xxx/*' -extract REDODG.269 -noreport -nodir

上面命令相關參數(shù)的含義:

·diskstring: 使用磁盤的全路徑或者是ASM_DISKSTRING參數(shù)值

·extract: 磁盤組名.ASM文件序號

·output:提取的輸出文件(當前目錄下)

·noreport:不輸出amdu的執(zhí)行過程

·nodir:不創(chuàng)建dump目錄

數(shù)據庫啟動到mount狀態(tài):

因為alert日志文件中輸出的啟動信息會包含實例參數(shù)信息,通過對輸出的參數(shù)信息重新編輯一個參數(shù)文件,通過參數(shù)文件以及控制文件我們就可以將數(shù)據庫啟動到mount狀態(tài)。

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>

獲取數(shù)據文件名稱:

此時由于數(shù)據庫已啟動到mount狀態(tài),通過v$datafile視圖既可獲取數(shù)據文件名稱。

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磁盤組中數(shù)據文件抽取到本地文件系統(tǒng):

如果數(shù)據文件采用OMF命名格式直接使用amdu命令進行抽取即可,命令與抽取控制文件相同,但當數(shù)據文件命名采用+DATADG/xxx/tbs01.dbf方式,需要先抽取元數(shù)據,在元數(shù)據中通過數(shù)據文件的alias找到對應的fnum在依照OMF格式文件的抽取方式進行抽取,更詳細的介紹請參考《asm翻譯系列》。

客戶在創(chuàng)建數(shù)據文件時均是采用OMF文件管理方式,直接編輯如下數(shù)據文件抽取命令:

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這樣的命令規(guī)則,由于抽取到本地后數(shù)據文件名稱已經發(fā)生變化,在數(shù)據庫mount狀態(tài)下將控制文件中記錄的數(shù)據文件名稱進行重命名,讓數(shù)據庫識別抽取到本地的數(shù)據文件。

重命名數(shù)據文件:

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';
...

將數(shù)據庫OPEN:

由于日志文件所在的磁盤組沒有出現(xiàn)dismount問題,日志文件完好,并可以正常訪問,這種情況下直接open數(shù)據庫即可。

SQL> alter database open;
Database altered.
SQL>

數(shù)據庫被正常打開,但此時數(shù)據文件,都存儲在本地文件系統(tǒng)中,還需將數(shù)據文件移動至asm磁盤組中,由于客戶環(huán)境已無可用的asm磁盤組,對上面問題磁盤組進程刪除重新創(chuàng)建后使用rman copy方式將本地文件系統(tǒng)中的文件重新移動至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;

到此,關于“怎么理解AMDU數(shù)據抽取”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續(xù)學習更多相關知識,請繼續(xù)關注億速云網站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI