[20130116]ASM未正常啟動,使用dd找回資料檔案.txt
[20130116]ASM未正常啟動,使用dd找回資料檔案.txt
參考連結:自己為了加強理解,重做一次。
昨天測試了asm啟動的情況下取出資料檔案,主要知道檔案號,以及x$kffxp檢視。
如果不啟動asm例項這些檢視不能訪問,如何取出資料檔案呢?[我的測試取出+DATA/test/datafile/test.284.770380219資料檔案]
利用kfed知道資料檔案對應的AU,使用dd命令拼接形成資料檔案。
按照連結:
kfed找出相關AU對映
------------------------------------------------------------------------------
1號檔案的第一個AU(0號盤2號AU)中,只能儲存1至255號檔案的。
從256號檔案開始,AU的分佈資訊儲存在1號檔案第二個AU中。
其中第一個塊(0號塊),對應256號檔案。1號塊對應257號檔案,等等,依此類推。
------------------------------------------------------------------------------
按照連結,他的測試有兩個分割槽,我僅僅一個,上面那句話,我讀了N久,慢慢理解,
參考連結:自己為了加強理解,重做一次。
SQL> column name format a50
SQL> select file#,ts#,status,enabled,checkpoint_change#,name,bytes from v$datafile;
FILE# TS# STATUS ENABLED CHECKPOINT_CHANGE# NAME BYTES
---------- ---------- ------- ---------- ------------------ -------------------------------------------------- ----------
1 0 SYSTEM READ WRITE 6460476 +DATA/test/datafile/system.270.762883167 775946240
2 1 ONLINE READ WRITE 6460476 +DATA/test/datafile/sysaux.269.762883167 597688320
3 2 ONLINE READ WRITE 6460476 +DATA/test/datafile/undotbs1.267.762883167 519045120
4 4 ONLINE READ WRITE 6460476 +DATA/test/datafile/users.266.762883167 722206720
5 6 ONLINE READ WRITE 6460476 +DATA/test/datafile/example.268.762883167 104857600
6 7 ONLINE READ WRITE 6460476 +DATA/test/datafile/tools.280.762943407 104857600
7 8 ONLINE READ WRITE 6460476 +DATA/test/datafile/test.284.770380219 10485760
8 10 ONLINE READ WRITE 6460476 +DATA/test/datafile/mssm.291.771757063 104857600
8 rows selected.
SQL> SELECT GROUP_NUMBER, FILE_NUMBER, NAME FROM v$asm_alias WHERE upper(NAME) LIKE '%SPFILE%' GROUP BY GROUP_NUMBER, FILE_NUMBER, NAME;
GROUP_NUMBER FILE_NUMBER NAME
------------ ----------- --------------------------------------------------
1 258 spfile.258.762881973
1 258 spfiletest.ora
SQL> SELECT disk_kffxp, au_kffxp, xnum_kffxp FROM x$kffxp WHERE GROUP_KFFXP=1 AND NUMBER_KFFXP=258;
DISK_KFFXP AU_KFFXP XNUM_KFFXP
---------- ---------- ----------
0 92 0
SQL> SELECT GROUP_NUMBER, FILE_NUMBER, NAME FROM v$asm_alias WHERE upper(NAME) LIKE '%TEST%' GROUP BY GROUP_NUMBER, FILE_NUMBER, NAME;
GROUP_NUMBER FILE_NUMBER NAME
------------ ----------- -------------------
1 258 spfiletest.ora
1 284 TEST.284.770380219
1 4294967295 TEST
SQL> SELECT disk_kffxp, au_kffxp, xnum_kffxp FROM x$kffxp WHERE GROUP_KFFXP=1 AND NUMBER_KFFXP=284;
DISK_KFFXP AU_KFFXP XNUM_KFFXP
---------- ---------- ----------
0 2676 0
0 2677 1
0 2672 2
0 2673 3
0 2674 4
0 2675 5
0 2576 6
0 2577 7
0 2578 8
0 2579 9
0 2580 10
11 rows selected.
SQL> column path format a40
SQL> select DISK_NUMBER,GROUP_NUMBER,PATH from v$asm_disk;
DISK_NUMBER GROUP_NUMBER PATH
----------- ------------ ----------------------------------------
1 0 /dev/raw/raw2
0 1 /dev/raw/raw1
--注:當前 /dev/raw/raw2沒有使用
昨天測試了asm啟動的情況下取出資料檔案,主要知道檔案號,以及x$kffxp檢視。
如果不啟動asm例項這些檢視不能訪問,如何取出資料檔案呢?[我的測試取出+DATA/test/datafile/test.284.770380219資料檔案]
利用kfed知道資料檔案對應的AU,使用dd命令拼接形成資料檔案。
按照連結:
kfed找出相關AU對映
------------------------------------------------------------------------------
1號檔案的第一個AU(0號盤2號AU)中,只能儲存1至255號檔案的。
從256號檔案開始,AU的分佈資訊儲存在1號檔案第二個AU中。
其中第一個塊(0號塊),對應256號檔案。1號塊對應257號檔案,等等,依此類推。
------------------------------------------------------------------------------
按照連結,他的測試有兩個分割槽,我僅僅一個,上面那句話,我讀了N久,慢慢理解,
$ kfed
as/mlib ASM Library [asmlib='lib']
aun/um AU number to examine or update [AUNUM=number]
aus/z Allocation Unit size in bytes [AUSZ=number]
blkn/um Block number to examine or update [BLKNUM=number]
blks/z Metadata block size in bytes [BLKSZ=number]
ch/ksum Update checksum before each write [CHKSUM=YES/NO]
cn/t Count of AUs to process [CNT=number]
d/ev ASM device to examine or update [DEV=string]
o/p KFED operation type [OP=READ/WRITE/MERGE/REPAIR/NEW/FORM/FIND/STRUCT]
p/rovnm Name for provisioning purposes [PROVNM=string]
s/eek AU number to seek to [SEEK=number]
te/xt File name for translated block text [TEXT=string]
ty/pe ASM metadata block type number [TYPE=number]
$ kfed read /dev/raw/raw1 aun=2 blkn=1 | less
kfbh.endian: 1 ; 0x000: 0x01
kfbh.hard: 130 ; 0x001: 0x82
kfbh.type: 4 ; 0x002: KFBTYP_FILEDIR
kfbh.datfmt: 1 ; 0x003: 0x01
kfbh.block.blk: 1 ; 0x004: T=0 NUMB=0x1
kfbh.block.obj: 1 ; 0x008: TYPE=0x0 NUMB=0x1
kfbh.check: 3606471433 ; 0x00c: 0xd6f66309
kfbh.fcn.base: 460 ; 0x010: 0x000001cc
kfbh.fcn.wrap: 0 ; 0x014: 0x00000000
kfbh.spare1: 0 ; 0x018: 0x00000000
kfbh.spare2: 0 ; 0x01c: 0x00000000
kfffdb.node.incarn: 1 ; 0x000: A=1 NUMM=0x0
kfffdb.node.frlist.number: 4294967295 ; 0x004: 0xffffffff
kfffdb.node.frlist.incarn: 0 ; 0x008: A=0 NUMM=0x0
kfffdb.hibytes: 0 ; 0x00c: 0x00000000
kfffdb.lobytes: 2097152 ; 0x010: 0x00200000
kfffdb.xtntcnt: 2 ; 0x014: 0x00000002
kfffdb.xtnteof: 2 ; 0x018: 0x00000002
kfffdb.blkSize: 4096 ; 0x01c: 0x00001000
kfffdb.flags: 1 ; 0x020: O=1 S=0 S=0 D=0 C=0 I=0 R=0 A=0
kfffdb.fileType: 15 ; 0x021: 0x0f
kfffdb.dXrs: 17 ; 0x022: SCHE=0x1 NUMB=0x1
kfffdb.iXrs: 17 ; 0x023: SCHE=0x1 NUMB=0x1
kfffdb.dXsiz[0]: 4294967295 ; 0x024: 0xffffffff
kfffdb.dXsiz[1]: 0 ; 0x028: 0x00000000
kfffdb.dXsiz[2]: 0 ; 0x02c: 0x00000000
kfffdb.iXsiz[0]: 4294967295 ; 0x030: 0xffffffff
kfffdb.iXsiz[1]: 0 ; 0x034: 0x00000000
kfffdb.iXsiz[2]: 0 ; 0x038: 0x00000000
kfffdb.xtntblk: 2 ; 0x03c: 0x0002
kfffdb.break: 60 ; 0x03e: 0x003c
kfffdb.priZn: 0 ; 0x040: KFDZN_COLD
kfffdb.secZn: 0 ; 0x041: KFDZN_COLD
kfffdb.ub2spare: 0 ; 0x042: 0x0000
kfffdb.alias[0]: 4294967295 ; 0x044: 0xffffffff
kfffdb.alias[1]: 4294967295 ; 0x048: 0xffffffff
kfffdb.strpwdth: 0 ; 0x04c: 0x00
kfffdb.strpsz: 0 ; 0x04d: 0x00
kfffdb.usmsz: 0 ; 0x04e: 0x0000
kfffdb.crets.hi: 32958287 ; 0x050: HOUR=0xf DAYS=0x1a MNTH=0x9 YEAR=0x7db
kfffdb.crets.lo: 542028800 ; 0x054: USEC=0x0 MSEC=0x3ad SECS=0x4 MINS=0x8
kfffdb.modts.hi: 32958287 ; 0x058: HOUR=0xf DAYS=0x1a MNTH=0x9 YEAR=0x7db
kfffdb.modts.lo: 542028800 ; 0x05c: USEC=0x0 MSEC=0x3ad SECS=0x4 MINS=0x8
kfffdb.dasz[0]: 0 ; 0x060: 0x00
kfffdb.dasz[1]: 0 ; 0x061: 0x00
kfffdb.dasz[2]: 0 ; 0x062: 0x00
kfffdb.dasz[3]: 0 ; 0x063: 0x00
kfffdb.permissn: 0 ; 0x064: 0x00
kfffdb.ub1spar1: 0 ; 0x065: 0x00
kfffdb.ub2spar2: 0 ; 0x066: 0x0000
kfffdb.user.entnum: 0 ; 0x068: 0x0000
kfffdb.user.entinc: 0 ; 0x06a: 0x0000
kfffdb.group.entnum: 0 ; 0x06c: 0x0000
kfffdb.group.entinc: 0 ; 0x06e: 0x0000
kfffdb.spare[0]: 0 ; 0x070: 0x00000000
kfffdb.spare[1]: 0 ; 0x074: 0x00000000
kfffdb.spare[2]: 0 ; 0x078: 0x00000000
kfffdb.spare[3]: 0 ; 0x07c: 0x00000000
kfffdb.spare[4]: 0 ; 0x080: 0x00000000
kfffdb.spare[5]: 0 ; 0x084: 0x00000000
kfffdb.spare[6]: 0 ; 0x088: 0x00000000
kfffdb.spare[7]: 0 ; 0x08c: 0x00000000
kfffdb.spare[8]: 0 ; 0x090: 0x00000000
kfffdb.spare[9]: 0 ; 0x094: 0x00000000
kfffdb.spare[10]: 0 ; 0x098: 0x00000000
kfffdb.spare[11]: 0 ; 0x09c: 0x00000000
kfffdb.usm: ; 0x0a0: length=0
kfffde[0].xptr.au: 2 ; 0x4a0: 0x00000002
kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000
kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0
kfffde[0].xptr.chk: 40 ; 0x4a7: 0x28
kfffde[1].xptr.au: 59 ; 0x4a8: 0x0000003b
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
從256號檔案開始,AU的分佈資訊儲存在1號檔案第二個AU中。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000
kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0
kfffde[1].xptr.chk: 17 ; 0x4af: 0x11
kfffde[2].xptr.au: 4294967295 ; 0x4b0: 0xffffffff
kfffde[2].xptr.disk: 65535 ; 0x4b4: 0xffff
kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0
kfffde[2].xptr.chk: 42 ; 0x4b7: 0x2a
kfffde[3].xptr.au: 4294967295 ; 0x4b8: 0xffffffff
kfffde[3].xptr.disk: 65535 ; 0x4bc: 0xffff
kfffde[3].xptr.flags: 0 ; 0x4be: L=0 E=0 D=0 S=0
kfffde[3].xptr.chk: 42 ; 0x4bf: 0x2a
--注意看我~ 的地方。
從256號檔案開始,AU的分佈資訊儲存在1號檔案第二個AU中,也就是(0號盤,59號AU)。
其中第一個塊(0號塊),對應256號檔案。1號塊對應257號檔案,等等,依此類推。
--這樣spfile檔案號是258,test檔案號是284
-- 258-256=2 , 284-256=28
$ kfed read /dev/raw/raw1 aun=59 blkn=2
...
kfffde[0].xptr.au: 92 ; 0x4a0: 0x0000005c
kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000
kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0
kfffde[0].xptr.chk: 118 ; 0x4a7: 0x76
kfffde[1].xptr.au: 4294967295 ; 0x4a8: 0xffffffff
kfffde[1].xptr.disk: 65535 ; 0x4ac: 0xffff
kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0
kfffde[1].xptr.chk: 42 ; 0x4af: 0x2a
...
au=4294967295,表示還未分配。
$ kfed read /dev/raw/raw1 aun=59 blkn=28| less
kfffde[0].xptr.au: 2676 ; 0x4a0: 0x00000a74
kfffde[0].xptr.disk: 0 ; 0x4a4: 0x0000
kfffde[0].xptr.flags: 0 ; 0x4a6: L=0 E=0 D=0 S=0
kfffde[0].xptr.chk: 84 ; 0x4a7: 0x54
kfffde[1].xptr.au: 2677 ; 0x4a8: 0x00000a75
kfffde[1].xptr.disk: 0 ; 0x4ac: 0x0000
kfffde[1].xptr.flags: 0 ; 0x4ae: L=0 E=0 D=0 S=0
kfffde[1].xptr.chk: 85 ; 0x4af: 0x55
kfffde[2].xptr.au: 2672 ; 0x4b0: 0x00000a70
kfffde[2].xptr.disk: 0 ; 0x4b4: 0x0000
kfffde[2].xptr.flags: 0 ; 0x4b6: L=0 E=0 D=0 S=0
kfffde[2].xptr.chk: 80 ; 0x4b7: 0x50
kfffde[3].xptr.au: 2673 ; 0x4b8: 0x00000a71
kfffde[3].xptr.disk: 0 ; 0x4bc: 0x0000
kfffde[3].xptr.flags: 0 ; 0x4be: L=0 E=0 D=0 S=0
kfffde[3].xptr.chk: 81 ; 0x4bf: 0x51
kfffde[4].xptr.au: 2674 ; 0x4c0: 0x00000a72
kfffde[4].xptr.disk: 0 ; 0x4c4: 0x0000
kfffde[4].xptr.flags: 0 ; 0x4c6: L=0 E=0 D=0 S=0
kfffde[4].xptr.chk: 82 ; 0x4c7: 0x52
kfffde[5].xptr.au: 2675 ; 0x4c8: 0x00000a73
kfffde[5].xptr.disk: 0 ; 0x4cc: 0x0000
kfffde[5].xptr.flags: 0 ; 0x4ce: L=0 E=0 D=0 S=0
kfffde[5].xptr.chk: 83 ; 0x4cf: 0x53
kfffde[6].xptr.au: 2576 ; 0x4d0: 0x00000a10
kfffde[6].xptr.disk: 0 ; 0x4d4: 0x0000
kfffde[6].xptr.flags: 0 ; 0x4d6: L=0 E=0 D=0 S=0
kfffde[6].xptr.chk: 48 ; 0x4d7: 0x30
kfffde[7].xptr.au: 2577 ; 0x4d8: 0x00000a11
kfffde[7].xptr.disk: 0 ; 0x4dc: 0x0000
kfffde[7].xptr.flags: 0 ; 0x4de: L=0 E=0 D=0 S=0
kfffde[7].xptr.chk: 49 ; 0x4df: 0x31
kfffde[8].xptr.au: 2578 ; 0x4e0: 0x00000a12
kfffde[8].xptr.disk: 0 ; 0x4e4: 0x0000
kfffde[8].xptr.flags: 0 ; 0x4e6: L=0 E=0 D=0 S=0
kfffde[8].xptr.chk: 50 ; 0x4e7: 0x32
kfffde[9].xptr.au: 2579 ; 0x4e8: 0x00000a13
kfffde[9].xptr.disk: 0 ; 0x4ec: 0x0000
kfffde[9].xptr.flags: 0 ; 0x4ee: L=0 E=0 D=0 S=0
kfffde[9].xptr.chk: 51 ; 0x4ef: 0x33
kfffde[10].xptr.au: 2580 ; 0x4f0: 0x00000a14
kfffde[10].xptr.disk: 0 ; 0x4f4: 0x0000
kfffde[10].xptr.flags: 0 ; 0x4f6: L=0 E=0 D=0 S=0
kfffde[10].xptr.chk: 52 ; 0x4f7: 0x34
kfffde[11].xptr.au: 4294967295 ; 0x4f8: 0xffffffff
kfffde[11].xptr.disk: 65535 ; 0x4fc: 0xffff
kfffde[11].xptr.flags: 0 ; 0x4fe: L=0 E=0 D=0 S=0
kfffde[11].xptr.chk: 42 ; 0x4ff: 0x2a
--這樣與上面的查詢資訊對上了,使用dd取出就很簡單了。
$ kfed read /dev/raw/raw1 aun=59 blkn=28 text=a.txt
--我僅僅一個磁碟,過濾a.txt,最後編輯內容如下就可以了,執行就可以取出資料檔案了。
$ grep 'xptr.au:' a.txt | grep -v '4294967295 ;'| cut -d';' -f1 | cut -d':' -f2 | sed 's/ //g'
2676
2677
2672
2673
2674
2675
2576
2577
2578
2579
2580
$ grep 'xptr.au:' a.txt | grep -v '4294967295 ;'| cut -d';' -f1 | cut -d':' -f2 | sed 's/ //g'| sed -e 's+^+dd if=/dev/sda7 bs=1024k count=1 skip=+' -e 's/$/ >>test01.dbf/'
dd if=/dev/sda7 bs=1024k count=1 skip=2676 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2677 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2672 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2673 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2674 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2675 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2576 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2577 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2578 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2579 >>test01.dbf
dd if=/dev/sda7 bs=1024k count=1 skip=2580 >>test01.dbf
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-752732/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 移動資料檔案從ASM到檔案系統ASM
- 在ASM Diskgroup間移動資料檔案ASM
- 使用rman在oracle ASM磁碟組之間移動資料檔案OracleASM
- 移動資料檔案從檔案系統到ASM磁碟組中ASM
- 學習使用.dd.gz檔案
- Oracle使用RMAN將普通資料檔案轉成ASMOracleASM
- ASM與檔案系統之間copy資料檔案--檔案系統到ASMASM
- 【ASM】ASM資料檔案和OS檔案(FILESYSTEM)轉移方法總結ASM
- ASM檔案移出後的註冊和開啟資料庫ASM資料庫
- 資料庫系統檔案啟動資料庫資料庫
- 使用RMAN遷移檔案系統資料庫到ASM資料庫ASM
- 遷移資料庫檔案到ASM資料庫ASM
- [ORACLE ASM] AMDU 恢復資料檔案OracleASM
- 如何遷移ASM資料檔案到檔案系統ASM
- [20130115]測試從asm中取出spfile檔案以及一個資料檔案.txtASM
- 使用shell指令碼及asm cp或RMAN copy批量將資料檔案從ASM拷貝到檔案系統指令碼ASM
- openfiledialog 使用 讀取txt檔案 StreamReader 檢驗資料
- cat開啟檔案正常vim開啟檔案中文亂碼解決方法
- 【資料遷移】RMAN遷移資料庫到ASM(二)切換資料檔案到ASM資料庫ASM
- 啟動資料庫報某個資料檔案不存在資料庫
- 使用RMAN在ASM和檔案系統之間複製資料ASM
- 使用RMAN在ASM和檔案系統之間拷貝資料ASM
- [20130104]快速移動資料檔案.txt
- 利用RMAN將非ASM檔案移動到ASM裡 - [ASM]ASM
- 把檔案系統的資料檔案遷移到ASM儲存ASM
- 【原創】ASM下的資料檔案轉換為普通檔案ASM
- Oracle undo 表空間資料檔案丟失強制啟動資料庫(沒有未提交的事務)Oracle資料庫
- oracle之 RAC本地資料檔案遷移至ASMOracleASM
- 資料庫從檔案系統遷移到ASM資料庫ASM
- 利用rman將本地資料檔案遷移到asmASM
- 達夢資料庫dmap服務無法正常啟動資料庫
- 資料庫啟動時丟失資料檔案模擬實驗資料庫
- playwright--自動化(三): 跳過檢測 使用正常谷歌 指定使用者資料 下載檔案谷歌
- Ubuntu gedit開啟txt檔案亂碼Ubuntu
- 使用ramdisk啟動ubuntu檔案系統Ubuntu
- 找回丟失的檔案
- oracle控制檔案與資料庫啟動的關係Oracle資料庫
- asm diskgroup 磁碟編號發生變化資料庫能正常開啟的測試ASM資料庫