[20210423]dump sga映像的對應塊.txt

lfree發表於2021-04-23

[20210423]dump sga映像的對應塊.txt

--//昨天的測試。連結 http://blog.itpub.net/267265/viewspace-2769217/,轉儲的sga映像自然沒有資料檔案的檔案頭。
--//嘗試加一個檔案頭看看是否能正常讀取,另外再次提醒使用dd要小心。

1.環境:
SYS@book> @ ver1
PORT_STRING                    VERSION        BANNER
------------------------------ -------------- --------------------------------------------------------------------------------
x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

2.問題提出:
SYS@book> alter system dump datafile '/u01/tmp/book/60c00000' block 51844;
alter system dump datafile '/u01/tmp/book/60c00000' block 51844
*
ERROR at line 1:
ORA-01565: error in identifying file '/u01/tmp/book/60c00000'
ORA-27048: skgfifi: file header information is invalid
Additional information: 9
--//無法識別檔案頭,不能做正常轉儲。

3.順便增加1個檔案頭看看:
$ cd /u01/tmp/book
$ cp 60c00000 60c00000.ORG
$ dd if=/mnt/ramdisk/book/users01.dbf of=/u01/tmp/book/60c00000 bs=8192 count=1 conv=notrunc
1+0 records in
1+0 records out
8192 bytes (8.2 kB) copied, 6.3288e-05 seconds, 129 MB/s
--//注意一定要加conv=notrunc,不然輸出檔案會截斷!!

SYS@book> alter system dump datafile '/u01/tmp/book/60c00000' block 51844;
alter system dump datafile '/u01/tmp/book/60c00000' block 51844
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [krhcvt_filhdr_v10_01], [], [], [], [], [], [], [], [], [], [], []
--//檔案頭也沒有。

$ dd if=/mnt/ramdisk/book/users01.dbf of=/u01/tmp/book/60c00000 bs=8192 count=2 conv=notrunc
2+0 records in
2+0 records out
16384 bytes (16 kB) copied, 8.1974e-05 seconds, 200 MB/s

SYS@book> alter system dump datafile '/u01/tmp/book/60c00000' block 51844;
System altered.

--//OK,現在可以了。檢視轉儲,太長擷取其中一部分:
Block header dump:  0x004000d1
 Object id on Block? Y
 seg/obj: 0xa  csc: 0x03.175941c3  itc: 2  flg: O  typ: 1 - DATA
     fsl: 0  fnx: 0x0 ver: 0x01

 Itl           Xid                  Uba         Flag  Lck        Scn/Fsc
0x01   0x0005.009.00000078  0x00c01cfe.0015.28  C---    0  scn 0x0000.0001cd26
0x02   0x000a.002.00004a8f  0x00c00a75.0e4f.01  --U-    1  fsc 0x0000.175941c5
bdba: 0x004000d1
data_block_dump,data header at 0x7fe5f2d6125c
===============
tsiz: 0x1fa0
hsiz: 0x6c
pbl: 0x7fe5f2d6125c
     76543210
flag=--------
ntab=2
nrow=43
frre=-1
fsbo=0x6c
fseo=0xc50
avsp=0x1590
tosp=0x1590
0xe:pti[0]  nrow=21 offs=0
0x12:pti[1] nrow=22 offs=21
0x16:pri[0] offs=0x1f8a
0x18:pri[1] offs=0x1f45
0x1a:pri[2] offs=0x1e95
0x1c:pri[3] offs=0x1e3c
0x1e:pri[4] offs=0x1de2
0x20:pri[5] offs=0x1d87
0x22:pri[6] offs=0x1d31
0x24:pri[7] offs=0x1c7e
0x26:pri[8] offs=0x1c18
....

tab 1, row 6, @0xc50
tl: 171 fb: -CH-FL-- lb: 0x0  cc: 22 cki: 5
col  0: [ 6]  53 59 53 54 45 4d
col  1: [ 2]  c1 02
col  2: [16]  32 44 35 39 34 45 38 36 46 39 33 42 31 37 41 31
col  3: [ 1]  80
col  4: [ 2]  c1 04
col  5: [ 7]  78 71 08 18 0c 26 29
col  6: [ 7]  78 75 02 03 11 28 3c
col  7: [ 7]  78 74 08 18 0c 2e 2b
col  8: [ 7]  78 71 08 18 0d 08 05
col  9: [ 1]  80
col 10: *NULL*
col 11: [ 2]  c1 02
col 12: *NULL*
col 13: *NULL*
col 14: [ 1]  80
col 15: [ 1]  80
col 16: [22]
 44 45 46 41 55 4c 54 5f 43 4f 4e 53 55 4d 45 52 5f 47 52 4f 55 50
col 17: *NULL*
col 18: [ 1]  80
col 19: *NULL*
col 20: *NULL*
col 21: [62]
 53 3a 31 45 39 42 43 34 30 38 42 37 44 39 36 44 34 39 35 45 30 30 39 38 46
 31 45 37 30 46 41 45 42 37 30 36 35 42 43 32 30 33 42 30 33 30 34 39 44 34
 38 37 37 32 38 34 34 33 46 42 34 31
..
end_of_block_dump

--//53 59 53 54 45 4d = SYSTEM
--//32 44 35 39 34 45 38 36 46 39 33 42 31 37 41 31 = 2D594E86F93B17A1
--//53 3a 31 45 39 42 43 34 30 38 42 37 44 39 36 44 34 39 35 45 30 30 39 38 46 = S:1E9BC408B7D96D495E0098F
--//31 45 37 30 46 41 45 42 37 30 36 35 42 43 32 30 33 42 30 33 30 34 39 44 34 = 1E70FAEB7065BC203B03049D4
--//38 37 37 32 38 34 34 33 46 42 34 31                                        = 87728443FB41
--//與前面的測試能對上。

--//再次嘗試使用bbed觀察,這次bbed能識別檔案頭的OS,檔案頭塊,基本不會出現問題。這次輸入block=51844沒有再出現問題。

BBED> set dba 100,51844
        DBA             0x1900ca84 (419482244 100,51844)

BBED> x /rcncnnttttncnnnnnccnnncct *kdbr[27]
rowdata[0]                                  @3244
----------
flag@3244: 0x6c (KDRHFL, KDRHFF, KDRHFH, KDRHFC)
lock@3245: 0x00
cols@3246:   22
ckix@3247:    5

col    0[6] @3248: SYSTEM
col    1[2] @3255: 1
col   2[16] @3258: 2D594E86F93B17A1
col    3[1] @3275: 0
col    4[2] @3277: 3
col    5[7] @3280: 2013-08-24 11:37:40
col    6[7] @3288: 2017-02-03 16:39:59
col    7[7] @3296: 2016-08-24 11:45:42
col    8[7] @3304: 2013-08-24 12:07:04
col    9[1] @3312: 0
col   10[0] @3314: *NULL*
col   11[2] @3315: 1
col   12[0] @3318: *NULL*
col   13[0] @3319: *NULL*
col   14[1] @3320: 0
col   15[1] @3322: 0
col  16[22] @3324: DEFAULT_CONSUMER_GROUP
col   17[0] @3347: *NULL*
col   18[1] @3348: 0
col   19[0] @3350: *NULL*
col   20[0] @3351: *NULL*
col  21[62] @3352: S:1E9BC408B7D96D495E0098F1E70FAEB7065BC203B03049D487728443FB41

3.擴充套件知識點:
--//實際上轉儲資料塊,僅僅資料庫啟動到nomount就可以。
SYS@book> shutdown immediate;
Database closed.
Database dismounted.
ORACLE instance shut down.

SYS@book> startup nomount
ORACLE instance started.
Total System Global Area  643084288 bytes
Fixed Size                  2255872 bytes
Variable Size             205521920 bytes
Database Buffers          427819008 bytes
Redo Buffers                7487488 bytes

SYS@book> alter system dump datafile '/u01/tmp/book/60c00000' block 51843;
System altered.

SYS@book> alter system dump datafile '/u01/tmp/book/60c00000' block 51844;
System altered.

--//所以我懷疑odu ,gdul之類的恢復工具,有可能就是利用這個特性dump資料塊,當然這僅僅是我的猜測,也許完全不正確。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2769427/,如需轉載,請註明出處,否則將追究法律責任。

相關文章