[20181212]truncate的另類恢復5.txt
[20181212]truncate的另類恢復5.txt
--//前一陣子,嘗試了truncate的恢復,連結如下:
http://blog.itpub.net/267265/viewspace-2156936/
http://blog.itpub.net/267265/viewspace-2157144/
--//上午嘗試了truncate reuse storage的恢復,連結如下:
http://blog.itpub.net/267265/viewspace-2284921/
--//透過修改資料字典,段頭的高低水位資訊以及段號,相對容易完成修復,透過redo轉儲獲得truncate前的資訊.
--//在實際上操作中很少有人使用truncate reuse storage,如果直接truncate,這樣Extent Map,Auxillary Map被刪除.
--//這樣恢復難度相對有點大,下午嘗試這樣的恢復.
1.環境:
1.環境:
SCOTT@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.建立測試環境:
SCOTT@book> create table t as select * from all_objects ;
Table created.
SCOTT@book> select object_id,data_object_id from dba_objects where owner=user and object_name='T';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
90557 90557
SCOTT@book> select count(*) from t;
COUNT(*)
----------
84767
SCOTT@book> column PARTITION_NAME noprint
SCOTT@book> select * from dba_extents where owner=user and segment_name='T';
OWNER SEGMENT_NAME SEGMENT_TYPE TABLESPACE_NAME EXTENT_ID FILE_ID BLOCK_ID BYTES BLOCKS RELATIVE_FNO
----- ------------ ------------ --------------- --------- ------- -------- ------- ------ ------------
SCOTT T TABLE USERS 0 4 520 65536 8 4
SCOTT T TABLE USERS 1 4 528 65536 8 4
SCOTT T TABLE USERS 2 4 536 65536 8 4
SCOTT T TABLE USERS 3 4 544 65536 8 4
SCOTT T TABLE USERS 4 4 552 65536 8 4
SCOTT T TABLE USERS 5 4 560 65536 8 4
SCOTT T TABLE USERS 6 4 672 65536 8 4
SCOTT T TABLE USERS 7 4 680 65536 8 4
SCOTT T TABLE USERS 8 4 688 65536 8 4
SCOTT T TABLE USERS 9 4 696 65536 8 4
SCOTT T TABLE USERS 10 4 704 65536 8 4
SCOTT T TABLE USERS 11 4 712 65536 8 4
SCOTT T TABLE USERS 12 4 720 65536 8 4
SCOTT T TABLE USERS 13 4 728 65536 8 4
SCOTT T TABLE USERS 14 4 736 65536 8 4
SCOTT T TABLE USERS 15 4 744 65536 8 4
SCOTT T TABLE USERS 16 4 768 1048576 128 4
SCOTT T TABLE USERS 17 4 896 1048576 128 4
SCOTT T TABLE USERS 18 4 1024 1048576 128 4
SCOTT T TABLE USERS 19 4 1152 1048576 128 4
SCOTT T TABLE USERS 20 4 1280 1048576 128 4
SCOTT T TABLE USERS 21 4 1408 1048576 128 4
SCOTT T TABLE USERS 22 4 1536 1048576 128 4
SCOTT T TABLE USERS 23 4 1664 1048576 128 4
SCOTT T TABLE USERS 24 4 1792 1048576 128 4
25 rows selected.
SCOTT@book> select SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK from dba_segments where owner=user and segment_name='T';
SEGMENT_NAME HEADER_FILE HEADER_BLOCK
-------------------- ----------- ------------
T 4 522
3.建立執行指令碼:
$ cat tr.txt
column member new_value v_member
column member noprint
set numw 12
pause run alter system archive log current or alter system switch logfile;
--//12c不允許在pluggable database執行這條命令
alter system archive log current;
SELECT member FROM v$log a, v$logfile b WHERE a.group#(+) = b.group# and a.STATUS='CURRENT' and rownum=1;
column curr1 new_value v_curr1
select current_scn curr1 from v$database;
--//以下操作內容:
truncate table t ;
column curr2 new_value v_curr2
select current_scn curr2 from v$database;
prompt exec DBMS_LOGMNR.START_LOGMNR(STARTSCN => &&v_curr1 ,ENDSCN => &&v_curr2 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE);
prompt alter system dump logfile '&&v_member' scn min &&v_curr1 scn max &&v_curr2;
alter system dump logfile '&&v_member' scn min &&v_curr1 scn max &&v_curr2;
SCOTT@book> @ tr.txt
run alter system archive log current or alter system switch logfile
System altered.
CURR1
------------
13815795309
Table truncated.
CURR2
------------
13815795378
exec DBMS_LOGMNR.START_LOGMNR(STARTSCN => 13815795309 ,ENDSCN => 13815795378 ,OPTIONS => DBMS_LOGMNR.DICT_FROM_ONLINE_CATALOG + DBMS_LOGMNR.CONTINUOUS_MINE)
alter system dump logfile '/mnt/ramdisk/book/redo03.log' scn min 13815795309 scn max 13815795378
System altered.
--//前面我已經做了修復高低水位的恢復.
$ egrep -A1 "^Low HWM|High HWM" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_9704.trc
Low HWM
Highwater:: 0x01000757 ext#: 24 blk#: 87 ext size: 128
--
High HWM
Highwater:: 0x01000757 ext#: 24 blk#: 87 ext size: 128
--
Low HWM
Highwater:: 0x0100020b ext#: 0 blk#: 3 ext size: 8
--
High HWM
Highwater:: 0x0100020b ext#: 0 blk#: 3 ext size: 8
--//透過轉儲日誌很容易獲得高低水位資訊.
SCOTT@book> select object_id,data_object_id from dba_objects where owner=user and object_name='T';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
90557 90558
--//段號也很容易獲得.
4.恢復.
--//首先恢復資料欄位:
UPDATE tab$ set dataobj#=90557 where obj#=90557;
UPDATE seg$ set hwmincr=90557 where hwmincr=90558;
update obj$ set dataobj#=90557 where obj#=90557;
commit ;
SYS@book> alter system flush buffer_cache;
System altered.
SYS@book> alter system flush shared_pool ;
System altered.
SCOTT@book> select * from t where rowid=dbms_rowid.ROWID_CREATE(1,90557,4, 523 ,0);
OWNER OBJECT_NAME SUBOBJECT_ OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE CREATED LAST_DDL_TIME TIMESTAMP STATUS T G S NAMESPACE EDITION_NAME
------ ----------- ---------- ---------- -------------- ----------- ------------------- ------------------- ------------------- ------- - - - ---------- ------------
SYS ICOL$ 20 2 TABLE 2013-08-24 11:37:35 2013-08-24 11:47:37 2013-08-24:11:37:35 VALID N N N 1
--//能查詢到,說明以上修改沒有問題。
5.修復段頭高低水位相關資訊以及段號.
segment header 每個 offset 對應的含義,如下:
----------------------------------------------
offset desc
----------------------------------------------
36 total extents
40 total blocks
48 高HWM的ext#
52 高HWM的blk#(從0開始)
56 高HWM的ext size#
60 高HWM的dba地址
76 高HWM下有多少個block
92 低HWM的ext#
96 低HWM的blk#(從0開始)
100 低HWM的ext size
104 低HWM的dba地址
120 高LHWM下有多少個block
124 Level 1 BMB for High HWM block
128 Level 1 BMB for Low HWM block
213 block size
220 L2 Array start offset
224 First Level 3 BMB
228 L2 Hint for inserts
236 Last Level 1 BMB
240 Last Level II BMB
244 Last Level III BMB
264 extents
272 obj#
280 ext#為0的block_id
284 ext#為0的extent blocks
288 ext#為1的block_id
292 ext#為1的extent blocks
...... 以此類推迴圈
2736 aux map資訊,ext#為0的L1 dba
2740 aux map資訊,ext#為0的data dba
2744 aux map資訊,ext#為1的L1 dba
2748 aux map資訊,ext#為1的data dba
...... 以此類推迴圈
5192 Second Level Bitmap block DBAs
$ egrep -A1 "^Low HWM|High HWM" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_9704.trc
Low HWM
Highwater:: 0x01000757 ext#: 24 blk#: 87 ext size: 128
--
High HWM
Highwater:: 0x01000757 ext#: 24 blk#: 87 ext size: 128
--
Low HWM
Highwater:: 0x0100020b ext#: 0 blk#: 3 ext size: 8
--
High HWM
Highwater:: 0x0100020b ext#: 0 blk#: 3 ext size: 8
--// 25=0x19 24=0x18 87=0x57 128=0x80
--// 0x01000757 大小頭對調 57 07 00 01
m /x 19 offset 36 --//total extents
m /x 19 offset 264 --//extents
--//32+16=48 開始每4各位元組分別 高HWM的ext#,高HWM的blk#,高HWM的ext size. 高HWM的dba地址.
--//64+28=92 開始每4各位元組分別 低HWM的ext#,低HWM的blk#,低HWM的ext size. 低HWM的dba地址.
m /x 18 offset 48 --//高HWM的ext#
m /x 57 offset 52 --//高HWM的blk#(從0開始)
m /x 80 offset 56 --//高HWM的ext size#
m /x 5707 offset 60 --//HWM的dba地址(低位)
m /x 0001 offset 62 --//HWM的dba地址(高位)
m /x 18 offset 92 --//低HWM的ext#
m /x 57 offset 96 --//低HWM的blk#(從0開始)
m /x 80 offset 100 --//低HWM的ext size
m /x 5707 offset 104 --//低HWM的dba地址(低位)
m /x 0001 offset 106 --//低HWM的dba地址(高位)
--//注意大小頭問題。
--//90557=0x161bd 大小頭對調 bd 61 01 00
m /x bd61 offset 272 --//修改obj#
m /x 0100 offset 274 --//修改obj#
--//整理如下,別寫錯了.^_^:
$ cat tr_bbed1.txt
set dba 4,522
m /x 19 offset 36
y
m /x 19 offset 264
m /x 18 offset 48
m /x 57 offset 52
m /x 80 offset 56
m /x 5707 offset 60
m /x 0001 offset 62
m /x 18 offset 92
m /x 57 offset 96
m /x 80 offset 100
m /x 5707 offset 104
m /x 0001 offset 106
m /x bd61 offset 272
m /x 0100 offset 274
sum apply
--//注:中間有1行y不是多餘的,這樣可以透過管道執行.因為是修改,中間有提示如下
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N)
--//時就報錯.如果害怕錯誤,使用copy &paste 執行吧.
$ cat tr_bbed1.txt | bbed parfile=bbed.par cmdfile=cmd.par
...
--//檢查:
BBED> dump /v offset 48 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 48 to 63 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
18000000 57000000 80000000 57070001 l ....W.......W...
<32 bytes per line>
BBED> dump /v offset 92 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 92 to 107 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
18000000 57000000 80000000 57070001 l ....W.......W...
<32 bytes per line>
BBED> dump /v offset 272 count 8
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 272 to 279 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
bd610100 00000010 l .a......
<32 bytes per line>
6.修復段頭Extent Map,Auxillary Map資訊:
--//Extent Map
$ grep -i "ADD:" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_9704.trc | tee ext_map.txt
ADD: dba:0x1000700 len:128 at offset:24
ADD: dba:0x1000680 len:128 at offset:23
ADD: dba:0x1000600 len:128 at offset:22
ADD: dba:0x1000580 len:128 at offset:21
ADD: dba:0x1000500 len:128 at offset:20
ADD: dba:0x1000480 len:128 at offset:19
ADD: dba:0x1000400 len:128 at offset:18
ADD: dba:0x1000380 len:128 at offset:17
ADD: dba:0x1000300 len:128 at offset:16
ADD: dba:0x10002e8 len:8 at offset:15
ADD: dba:0x10002e0 len:8 at offset:14
ADD: dba:0x10002d8 len:8 at offset:13
ADD: dba:0x10002d0 len:8 at offset:12
ADD: dba:0x10002c8 len:8 at offset:11
ADD: dba:0x10002c0 len:8 at offset:10
ADD: dba:0x10002b8 len:8 at offset:9
ADD: dba:0x10002b0 len:8 at offset:8
ADD: dba:0x10002a8 len:8 at offset:7
ADD: dba:0x10002a0 len:8 at offset:6
ADD: dba:0x1000230 len:8 at offset:5
ADD: dba:0x1000228 len:8 at offset:4
ADD: dba:0x1000220 len:8 at offset:3
ADD: dba:0x1000218 len:8 at offset:2
ADD: dba:0x1000210 len:8 at offset:1
--//Auxillary Map
$ grep -i "ADDAXT" /u01/app/oracle/diag/rdbms/book/book/trace/book_ora_9704.trc | tee aux_map.txt
ADDAXT: offset:24 fdba:x01000700 bdba:0x01000702
ADDAXT: offset:23 fdba:x01000680 bdba:0x01000682
ADDAXT: offset:22 fdba:x01000600 bdba:0x01000602
ADDAXT: offset:21 fdba:x01000580 bdba:0x01000582
ADDAXT: offset:20 fdba:x01000500 bdba:0x01000502
ADDAXT: offset:19 fdba:x01000480 bdba:0x01000482
ADDAXT: offset:18 fdba:x01000400 bdba:0x01000402
ADDAXT: offset:17 fdba:x01000380 bdba:0x01000382
ADDAXT: offset:16 fdba:x01000300 bdba:0x01000302
ADDAXT: offset:15 fdba:x010002e0 bdba:0x010002e8
ADDAXT: offset:14 fdba:x010002e0 bdba:0x010002e1
ADDAXT: offset:13 fdba:x010002d0 bdba:0x010002d8
ADDAXT: offset:12 fdba:x010002d0 bdba:0x010002d1
ADDAXT: offset:11 fdba:x010002c0 bdba:0x010002c8
ADDAXT: offset:10 fdba:x010002c0 bdba:0x010002c1
ADDAXT: offset:9 fdba:x010002b0 bdba:0x010002b8
ADDAXT: offset:8 fdba:x010002b0 bdba:0x010002b1
ADDAXT: offset:7 fdba:x010002a0 bdba:0x010002a8
ADDAXT: offset:6 fdba:x010002a0 bdba:0x010002a1
ADDAXT: offset:5 fdba:x01000228 bdba:0x01000230
ADDAXT: offset:4 fdba:x01000228 bdba:0x01000229
ADDAXT: offset:3 fdba:x01000218 bdba:0x01000220
ADDAXT: offset:2 fdba:x01000218 bdba:0x01000219
ADDAXT: offset:1 fdba:x01000208 bdba:0x01000210
--//oracle轉儲還有點小問題,fdba的輸出,前面的16進位制少1個0.而前面Extent Map不足8位沒有補0,格式不統一.
--//日誌檔案裡面就有這些資訊,剩下的事情就簡單了,如何回填到原來的位置.
280 ext#為0的block_id
284 ext#為0的extent blocks
288 ext#為1的block_id --//從這裡開始
292 ext#為1的extent blocks
...... 以此類推迴圈
2736 aux map資訊,ext#為0的L1 dba
2740 aux map資訊,ext#為0的data dba
2744 aux map資訊,ext#為1的L1 dba --//從這裡開始
2748 aux map資訊,ext#為1的data dba
...... 以此類推迴圈
--//我看了offset 280,2736的資訊還在.
BBED> dump /v offset 280 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 280 to 295 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
08020001 08000000 00000000 00000000 l ................
<32 bytes per line>
BBED> dump /v offset 2736 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 2736 to 2751 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
08020001 0b020001 00000000 00000000 l ................
<32 bytes per line>
--//僅僅offset 288,2744的資訊被清空了.
--//建立如下指令碼:
$ cat ext_map.sh
#! /bin/bash
cat ext_map.txt | sed -e 's/^ ADD: //' -e 's/ at//' | tr ": " "=;" | while read i
do
eval $i
dba=$(printf "%08x" $dba )
#echo $dba $len $offset
a1=${dba:0:2}
a2=${dba:2:2}
a3=${dba:4:2}
a4=${dba:6:2}
#echo $a1 $a2 $a3 $a4
offset=$((($offset-1)*8+288))
echo m /x $a4$a3 offset $offset
offset=$(($offset+2))
echo m /x $a2$a1 offset $offset
offset=$(($offset+2))
len=$(echo "obase=16;$len"| bc)
len=$(printf "%02s" $len )
echo m /x $len ' ' offset $offset
echo
done
$ . ext_map.sh | tee ext_map_bbed.txt
m /x 0007 offset 472
m /x 0001 offset 474
m /x 80 offset 476
...
m /x 1802 offset 296
m /x 0001 offset 298
m /x 8 offset 300
m /x 1002 offset 288
m /x 0001 offset 290
m /x 8 offset 292
$ cat aux_map.sh
#! /bin/bash
cat aux_map.txt | sed -e 's/^ ADDAXT: //' -e 's/0x//' -e 's/x//'| tr ": " "=;" | while read i
do
eval $i
#echo $offset $fdba $bdba
a1=${fdba:0:2}
a2=${fdba:2:2}
a3=${fdba:4:2}
a4=${fdba:6:2}
#echo $a1 $a2 $a3 $a4
b1=${bdba:0:2}
b2=${bdba:2:2}
b3=${bdba:4:2}
b4=${bdba:6:2}
#echo $b1 $b2 $b3 $b4
offset=$((($offset-1)*8+2744))
echo m /x $a4$a3 offset $offset
offset=$(($offset+2))
echo m /x $a2$a1 offset $offset
offset=$(($offset+2))
echo m /x $b4$b3 offset $offset
offset=$(($offset+2))
echo m /x $b2$b1 offset $offset
echo
done
$ . aux_map.sh | tee aux_map_bbed.txt
m /x 0007 offset 2928
m /x 0001 offset 2930
m /x 0207 offset 2932
m /x 0001 offset 2934
...
m /x 0802 offset 2744
m /x 0001 offset 2746
m /x 1002 offset 2748
m /x 0001 offset 2750
--//然後開頭加入set dba 4,522,結尾加入sum apply.
--//注意不要忘記在m開始的第2行加入y,例子如下:
m /x 0007 offset 2928
y
m /x 0001 offset 2930
$ cat /home/oracle/xxx430/testl/ext_map_bbed.txt | bbed parfile=bbed.par cmdfile=cmd.par
$ cat /home/oracle/xxx430/testl/aux_map_bbed.txt | bbed parfile=bbed.par cmdfile=cmd.par
SCOTT@book> alter system flush buffer_cache;
System altered.
SCOTT@book> alter system flush shared_pool;
System altered.
SCOTT@book> select count(*) from t;
COUNT(*)
----------
84767
--//OK,成功了.
7.繼續測試:
--//理論講恢復到這裡最好把表複製到別的表空間.
--//而且第一段的L1沒有修改段號,這樣恢復不能插入資料的,而且檔案頭的點陣圖區並沒有標識這些空間可用,必須修復.
SCOTT@book> insert into t select * from all_objects where rownum<=1;
insert into t select * from all_objects where rownum<=1
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [ktspgfblk3:kcbz_objdchk], [0], [0], [1], [], [], [], [], [], [], [], []
BBED> set dba 4,520
DBA 0x01000208 (16777736 4,520)
BBED> dump /v offset 192 count 8
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 520 Offsets: 192 to 199 Dba:0x01000208
-----------------------------------------------------------------------------------------------------------
be610100 6f4e7c37 l .a..oN|7
<32 bytes per line>
--//0x161be=90558,當前dba=4,520的資料段號還是90558.
BBED> m /x bd61 offset 192
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 520 Offsets: 192 to 199 Dba:0x01000208
------------------------------------------------------------------------------------------------------------------------------------------------
bd610100 6f4e7c37
<64 bytes per line>
BBED> sum apply
Check value for File 4, Block 520:
current = 0xe970, required = 0xe970
--//修復資料檔案頭的點陣圖區,參考連結:http://blog.itpub.net/267265/viewspace-2128411/
SYS@book> execute dbms_space_admin.TABLESPACE_REBUILD_BITMAPS('USERS');
PL/SQL procedure successfully completed.
SYS@book> alter system checkpoint ;
System altered.
--//依舊無法插入,使用10046跟蹤發現.
PARSING IN CURSOR #139755626819840 len=56 dep=0 uid=83 oct=2 lid=83 tim=1544597100085300 hv=999879737 ad='7d60ee00' sqlid='26cwtxhxtjx1t'
insert into t select * from all_objects where rownum<=1
END OF STMT
PARSE #139755626819840:c=132980,e=133583,p=0,cr=10,cu=0,mis=1,r=0,dep=0,og=1,plh=2967680183,tim=1544597100085297
WAIT #139755626819840: nam='Disk file operations I/O' ela= 50 FileOperation=2 fileno=4 filetype=2 obj#=90557 tim=1544597100089806
WAIT #139755626819840: nam='db file sequential read' ela= 12 file#=4 block#=521 blocks=1 obj#=90557 tim=1544597100089868
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
*** SESSION ID:(274.9) 2018-12-12 14:45:00.089
OBJD MISMATCH typ=33, seg.obj=-2, diskobj=90558, dsflg=4, dsobj=90557, tid=90557, cls=9
--//dba = 4,521也需要修改資料段號.
BBED> set dba 4,521
DBA 0x01000209 (16777737 4,521)
BBED> dump /v offset 104 count 8
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 521 Offsets: 104 to 111 Dba:0x01000209
-----------------------------------------------------------------------------------------------------------
be610100 01000000 l .a......
<32 bytes per line>
BBED> m /x bd61 offset 104
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 521 Offsets: 104 to 111 Dba:0x01000209
------------------------------------------------------------------------------------------------------------------------------------------------
bd610100 01000000
<64 bytes per line>
BBED> sum apply
Check value for File 4, Block 521:
current = 0x829f, required = 0x829f
SCOTT@book> insert into t select * from all_objects where rownum<=1;
insert into t select * from all_objects where rownum<=1
*
ERROR at line 1:
ORA-00600: internal error code, arguments: [ktspgetmyb-1], [], [], [], [], [], [], [], [], [], [], []
--//不行!!放棄!!估計還有許多資訊需要修改.
segment header 每個 offset 對應的含義,如下:
----------------------------------------------
offset desc
----------------------------------------------
36 total extents
40 total blocks
48 高HWM的ext#
52 高HWM的blk#(從0開始)
56 高HWM的ext size#
60 高HWM的dba地址
76 高HWM下有多少個block
92 低HWM的ext#
96 低HWM的blk#(從0開始)
100 低HWM的ext size
104 低HWM的dba地址
120 高LHWM下有多少個block
124 Level 1 BMB for High HWM block
128 Level 1 BMB for Low HWM block
213 block size
220 L2 Array start offset
224 First Level 3 BMB
228 L2 Hint for inserts
236 Last Level 1 BMB
240 Last Level II BMB
244 Last Level III BMB
264 extents
272 obj#
280 ext#為0的block_id
284 ext#為0的extent blocks
288 ext#為1的block_id
292 ext#為1的extent blocks
...... 以此類推迴圈
2736 aux map資訊,ext#為0的L1 dba
2740 aux map資訊,ext#為0的data dba
2744 aux map資訊,ext#為1的L1 dba
2748 aux map資訊,ext#為1的data dba
...... 以此類推迴圈
5192 Second Level Bitmap block DBAs
BBED> dump /v offset 40 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 40 to 55 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
08000000 9c0a0000 18000000 57000000 l ............W...
<32 bytes per line>
BBED> dump /v offset 76 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 76 to 91 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
00000000 00000000 00000000 00000000 l ................
<32 bytes per line>
BBED> dump /v offset 120 count 16
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 120 to 135 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
00000000 08020001 08020001 00000000 l ................
<32 bytes per line>
BBED> dump /v offset 228 count 4
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 228 to 231 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
09020001 l ....
<32 bytes per line>
BBED> dump /v offset 228 count 4
File: /mnt/ramdisk/book/users01.dbf (4)
Block: 522 Offsets: 228 to 231 Dba:0x0100020a
-----------------------------------------------------------------------------------------------------------
09020001 l ....
<32 bytes per line>
--//還有太多資訊需要修改了,放棄!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/267265/viewspace-2284984/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20180627]truncate table的另類恢復.txt
- [20180630]truncate table的另類恢復2.txt
- [20181212]關於truncate reuse storage.txt
- [20190225]刪除tab$記錄的恢復5.txt
- [20181031]truncate IDL_UB1$恢復.txt
- 7_Oracle truncate異常恢復之plsql修復OracleSQL
- 6_Oracle truncate異常恢復之bbed修復Oracle
- 【資料庫資料恢復】如何恢復Oracle資料庫truncate表的資料資料庫資料恢復Oracle
- 【資料庫資料恢復】誤truncate table的Oracle資料庫資料恢復方案資料庫資料恢復Oracle
- 【資料庫資料恢復】Oracle資料庫誤truncate table的資料恢復案例資料庫資料恢復Oracle
- 【資料庫資料恢復】oracle資料庫誤truncate table怎麼恢復資料?資料庫資料恢復Oracle
- 《騎馬與砍殺》:CRPG精神的另類復活
- 【/proc/檔案淺析】另類辦法恢復資料檔案和控制檔案
- 【北亞資料恢復】oracle資料庫執行truncate table命令怎麼恢復資料?資料恢復Oracle資料庫
- 【北亞資料恢復】誤操作導致雲伺服器表被truncate,表內資料被delete的資料恢復資料恢復伺服器delete
- oracle資料庫災難挽救應急方案之DDL誤操作恢復(truncate)Oracle資料庫
- AppBoxFuture(八): 另類的ORM實現APPORM
- 解決 "Script Error" 的另類思路Error
- 另類 RobotFramework 使用法Framework
- win電腦快速關機的另類方法
- 《有殺氣童話2》:另類童話世界開啟的另類MMO | 遊戲產品觀察遊戲
- 技術之外的工程師另類成長指南工程師
- 如何恢復SSD NVME固態硬碟的資料恢復硬碟資料恢復
- bitlocker如何恢復金鑰 bitlocker恢復金鑰的方法
- 另類用法 hyperf/session 實現 API tokenSessionAPI
- vue3.0 載入json的“另類”方法(非ajax)VueJSON
- 驚喜!一個檔案多個【請求類】的另類寫法
- 伺服器資料恢復-UNIX類檔案系統資料災難的資料恢復可能性分析伺服器資料恢復
- Prometheus 告警恢復時,怎麼獲取恢復時的值?Prometheus
- 照片恢復軟體是如何恢復數位相機照片的?
- 怎樣用恢復驅動器來恢復win10 使用恢復驅動器恢復win10系統的步驟Win10
- 資料恢復:AMDU資料抽取恢復資料恢復
- postgreSQL 恢復至故障點 精準恢復SQL
- [20181212]bash shell 字串 補零.txt字串
- 【資料庫資料恢復】透過恢復NDF檔案修復資料庫的資料恢復過程資料庫資料恢復
- 宮鬥遊戲,另類財富密碼遊戲密碼
- 請恢復我的帖子
- oracle truncate table recover(oracle 如何拯救誤操作truncate的表)Oracle