bbed-truncate表恢复

bbed恢复truncate表

truncate操作实际上就是修改表段的段头信息,回收高水位线的操作。根据这个思路,我们也可以通过改回segment header和基表信息,修改高水位线来恢复数据。表一旦被误truncate,一定要第一时间将表空间read only,防止二次破坏。

下面创建一组测试表


[oracle@renCAP ~]$  sqlplus bbed_user/oracle@renpdb
 
SQL*Plus: Release 12.2.0.1.0 Production on Fri Jun 21 07:50:42 2019
 
Copyright (c) 1982, 2016, Oracle.  All rights reserved.
 
Last Successful login time: Fri Jun 21 2019 04:18:22 +08:00
 
Connected to:
Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production
 
SQL> 
SQL>  create table bbed_trunc_table as select  *  from dba_objects;


Table created.

SQL> select count(*) from bbed_trunc_table;

  COUNT(*)
----------
     72629

SQL> 
SQL> select object_id, data_object_id, object_name from dba_objects where object_name='BBED_TRUNC_TABLE';

 OBJECT_ID DATA_OBJECT_ID OBJECT_NAME
---------- -------------- --------------------------------------------------------------------------------------------------------------------------------
     73254          73254 BBED_TRUNC_TABLE

     
SQL>  select OWNER,SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK from dba_segments where segment_name='BBED_TRUNC_TABLE';

OWNER                SEGMENT_NAME         HEADER_FILE HEADER_BLOCK
-------------------- -------------------- ----------- ------------
BBED_USER            BBED_TRUNC_TABLE             15          162

SQL> alter system dump datafile 15 block 162;

System altered.

SQL> select value from v$diag_info where name ='Default Trace File';

VALUE
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_108261.trc

测试表创建完毕,我们对表dump,可以发现dump显示了block size:8192,Level 1 BMB :03c00681,Level 2 BMB :03c000a1,extent:27个,obj#:73254

在segment中存在用来描述每个块使用情况的位图块(BMB Bitmap block),对于数据插入肯定是要找有空间的block。

L1 ,level 1 Bitmap Block(8k),一个位图块可以描述几十个、几百个数据,但是一个L1 BMB不足以描述所有数据,所以会有多个L1 BMB,当大于一个BMB就会生成 L2 level 2 Bitmap Block,同样的还有L3 BMB,基本上很少存在,除非表特别大。其基本架构如图所示。

  Extent Control Header
  -----------------------------------------------------------------
  Extent Header:: spare1: 0      spare2: 0      #extents: 27     #blocks: 1536  
                  last map  0x00000000  #maps: 0      offset: 2716  
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128   
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 1448  
  mapblk  0x00000000  offset: 26    
      Disk Lock:: Locked by xid:  0x0007.001.00000243
  --------------------------------------------------------
  Low HighWater Mark : 
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128   
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 1448  
  mapblk  0x00000000  offset: 26    
  Level 1 BMB for High HWM block: 0x03c00680
  Level 1 BMB for Low HWM block: 0x03c00680
  --------------------------------------------------------
  Segment Type: 1 nl2: 1      blksz: 8192   fbsz: 0      
  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x03c000a1
  Last Level 1 BMB:  0x03c00681   >>>>>>L1 BMB 15,160
  Last Level II BMB:  0x03c000a1  >>>>>>L2 BMB 15,161
  Last Level III BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 27   obj#: 73254  flag: 0x10000000
  Inc # 0 
  Extent Map
SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence     29
Next log sequence to archive   31
Current log sequence           31
 
SQL> show parameter recover

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
db_recovery_file_dest                string      /data/area
db_recovery_file_dest_size           big integer 8016M
db_unrecoverable_scn_tracking        boolean     TRUE
recovery_parallelism                 integer     0
remote_recovery_file_dest            string

SQL> ! ls -l /data/area/REN/archivelog/2019_06_21
总用量 15244
-rw-r----- 1 oracle oinstall 14902784 6月  20 11:04 o1_mf_1_30_gjoxxs8w_.arc
-rw-r----- 1 oracle oinstall   702976 6月  20 11:12 o1_mf_1_31_gjoyf19t_.arc

SQL> 

SQL> truncate table BBED_TRUNC_TABLE;

Table truncated.

SQL> select count(*) from BBED_TRUNC_TABLE;

  COUNT(*)
----------
         0

SQL> alter system dump datafile 15 block 162;

System altered.

SQL> select value from v$diag_info where name ='Default Trace File';

VALUE
--------------------------------------------------------------------------------
/opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_109512.trc

一、恢复数据字典

bbed数据恢复所有信息来自redo 或归档中获取

SQL> alter system dump logfile '/data/area/REN/archivelog/2019_06_21/o1_mf_1_34_gjr789v0_.arc';

System altered.

SQL> select value from v$diag_info where name ='Default Trace File';

VALUE
--------------------------------------------------------------------------------
/opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_77919.trc

归档重要信息解读

Both the HWMs
Low HWM
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128 <<<<<<<truncate 之前的LOW HWM ,在26号段上
  #blocks in seg. hdr's freelists: 0
  #blocks below: 1448  <<<<<<<<<管理1448个block
  mapblk  0x00000000  offset: 26
lfdba:  0x03c00680
High HWM
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128 <<<<<<<truncate 之前的High HWM ,在26号段上
  #blocks in seg. hdr's freelists: 0
  #blocks below: 1448 <<<<<<<<<管理1448个block
  mapblk  0x00000000  offset: 26
lfdba:  0x03c00680 hint dba:  0x03c000a1
Lasts in Header
LF: 62916225 LS: 62914721 LT: 0 FT: 0
CHANGE #2 CON_ID:3 TYP:0 CLS:4 AFN:15 DBA:0x03c000a2 OBJ:73254 SCN:0x00000000001a3803 SEQ:2 OP:13.28 ENC:0 RBL:0 FLG:0x0000
Both the HWMs
Low HWM 
      Highwater::  0x03c000a3  ext#: 0      blk#: 3      ext size: 8  <<<<<<<truncate 之后的LOW HWM  
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 0
lfdba:  0x03c000a0
High HWM
      Highwater::  0x03c000a3  ext#: 0      blk#: 3      ext size: 8  <<<<<<<truncate 之后的High HWM  
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 0
lfdba:  0x03c000a0 hint dba:  0x03c000a1
Lasts in Header
LF: 62914720 LS: 62914721 LT: 0 FT: 0
CHANGE #3 CON_ID:3 TYP:0 CLS:8 AFN:15 DBA:0x03c000a0 OBJ:73254 SCN:0x00000000001a3803 SEQ:2 OP:13.22 ENC:0 RBL:0 FLG:0x0000
Redo on Level1 Bitmap Block
Redo to set hwm
Opcode: 32      Highwater::  0x03c000a3  ext#: 0      blk#: 3      ext size: 8
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 0

REDO RECORD - Thread:1 RBA: 0x000022.0000805d.0184 LEN: 0x0060 VLD: 0x01 CON_UID: 1250055670
SCN: 0x00000000001a3803 SUBSCN:  6 06/21/2019 07:54:58
CHANGE #1 CON_ID:3 TYP:0 CLS:8 AFN:15 DBA:0x03c00680 OBJ:73254 SCN:0x00000000001a3803 SEQ:1 OP:13.22 ENC:0 RBL:0 FLG:0x0000
Redo on Level1 Bitmap Block
Redo to set hwm
Opcode: 32      Highwater::  0x00000000  ext#: 0      blk#: 0      ext size: 0
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0
  mapblk  0x00000000  offset: 0

REDO RECORD - Thread:1 RBA: 0x000022.0000805d.01e4 LEN: 0x0054 VLD: 0x01 CON_UID: 1250055670
SCN: 0x00000000001a3803 SUBSCN:  6 06/21/2019 07:54:58
CHANGE #1 MEDIA RECOVERY MARKER CON_ID:3 SCN:0x0000000000000000 SEQ:0 OP:18.3 ENC:0 FLG:0x0000
Reuse redo entry
Object reuse: pdb=3, tsn=8 objd=73254

REDO RECORD - Thread:1 RBA: 0x000022.00008060.0010 LEN: 0x0078 VLD: 0x05 CON_UID: 1250055670
SCN: 0x00000000001a3805 SUBSCN:  1 06/21/2019 07:54:58
(LWN RBA: 0x000022.00008060.0010 LEN: 0x00000001 NST: 0x0001 SCN: 0x00000000001a3805)
CHANGE #1 CON_ID:3 TYP:0 CLS:8 AFN:15 DBA:0x03c000a0 OBJ:73254 SCN:0x00000000001a3803 SEQ:3 OP:13.22 ENC:0 RBL:0 FLG:0x0000
Redo on Level1 Bitmap Block
Redo to Change Opcode
Opcode: 9locking transaction:

REDO RECORD - Thread:1 RBA: 0x000022.00008060.0088 LEN: 0x00cc VLD: 0x01 CON_UID: 1250055670
SCN: 0x00000000001a3805 SUBSCN:  2 06/21/2019 07:54:58
CHANGE #1 CON_ID:3 TYP:0 CLS:22 AFN:11 DBA:0x0240240a OBJ:4294967295 SCN:0x00000000001a3803 SEQ:4 OP:5.1 ENC:0 RBL:0 FLG:0x0000
ktudb redo: siz: 72 spc: 7240 flg: 0x0022 seq: 0x0136 rec: 0x08
            xid:  0x0003.000.000002db
ktubu redo: slt: 0 rci: 7 opc: 13.23 objn: 73254 objd: 73254 tsn: 8
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  No
             0x00000000
Undo for Lev1 Bitmap Block
L1 DBA:  0x03c000a0 L2 DBA:  0x00000000 fcls: 8 scls: 0 offset: 0
Redo on Level1 Bitmap Block
 Change objd
Newobjd: 73254
CHANGE #2 CON_ID:3 TYP:0 CLS:8 AFN:15 DBA:0x03c000a0 OBJ:73254 SCN:0x00000000001a3805 SEQ:1 OP:13.22 ENC:0 RBL:0 FLG:0x0000
Redo on Level1 Bitmap Block
 Change objd
Newobjd: 73259  >>>>>>>>>dataobj# 从73254变成了73259
....省略.............

REDO RECORD - Thread:1 RBA: 0x000022.0000806e.009c LEN: 0x0044 VLD: 0x01 CON_UID: 1250055670
SCN: 0x00000000001a3811 SUBSCN: 28 06/21/2019 07:54:58
CHANGE #1 CON_ID:3 TYP:0 CLS:4 AFN:15 DBA:0x03c000a2 OBJ:73259 SCN:0x00000000001a3811 SEQ:1 OP:14.2 ENC:0 RBL:0 FLG:0x0000
ktelk redo: xid:  0x0001.017.00000359

REDO RECORD - Thread:1 RBA: 0x000022.0000806e.00e0 LEN: 0x0150 VLD: 0x01 CON_UID: 1250055670
SCN: 0x00000000001a3811 SUBSCN: 29 06/21/2019 07:54:58
CHANGE #1 CON_ID:3 TYP:0 CLS:17 AFN:11 DBA:0x02400080 OBJ:4294967295 SCN:0x00000000001a3811 SEQ:1 OP:5.2 ENC:0 RBL:0 FLG:0x0000
ktudh redo: slt: 0x0017 sqn: 0x00000000 flg: 0x0002 siz: 112 fbi: 184
            uba: 0x02401191.017b.17    pxid:  0x0000.000.00000000
CHANGE #2 CON_ID:3 TYP:0 CLS:18 AFN:11 DBA:0x02401191 OBJ:4294967295 SCN:0x00000000001a3811 SEQ:1 OP:5.1 ENC:0 RBL:0 FLG:0x0000
ktudb redo: siz: 112 spc: 5142 flg: 0x0022 seq: 0x017b rec: 0x17
            xid:  0x0001.017.00000359
ktubu redo: slt: 23 rci: 0 opc: 14.5 objn: 1 objd: 73259 tsn: 8
Undo type:  Regular undo       Undo type:  Last buffer split:  No
Tablespace Undo:  Yes
             0x00000000
kteopu undo - undo operation on extent map
       segdba: 0x3c000a2  class: 4  mapdba:0x3c000a2  offset: 3
 rbr extent - dba: 0x0  nbk: 0x0
kteop redo - redo operation on extent map
   ADD: dba:0x3c00680 len:128 at offset:26    >>>>>>>>>extent map 在26号段上 
  ADDAXT: offset:26 fdba:x03c00680 bdba:0x03c00682  >>>>>>>sux map 在26号段上
   SETSTAT: exts:27 blks:1536 lastmap:0x0 mapcnt:0
CHANGE #3 CON_ID:3 TYP:0 CLS:4 AFN:15 DBA:0x03c000a2 OBJ:73259 SCN:0x00000000001a3811 SEQ:2 OP:14.4 ENC:0 RBL:0 FLG:0x0000
kteop redo - redo operation on extent map
   DELETE: entry:26
   shift back: dba:0x0 len:0
   SETSTAT: exts:26 blks:1408 lastmap:0x0 mapcnt:0

检查truncate之后dataobj#变成了什么,从归档dump中获取,dataobj#从73254变成了73259,这里我们只需改回73254即可

[root@renCAP 2019_06_20]# grep -i "CDOBJ" /opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_77919.trc
   CDOBJ: new object number:73254
   CDOBJ: new object number:73259
 

SQL> select obj#,dataobj# from sys.obj$ where obj#=73254;

      OBJ#   DATAOBJ#
---------- ----------
     73254      73259

SQL> select obj#,dataobj# from sys.tab$ where obj#=73254;

      OBJ#   DATAOBJ#
---------- ----------
     73254      73259

SQL> update sys.obj$ set dataobj#=73254 where obj#=73254;

1 row updated.

SQL> update sys.tab$ set dataobj#=73254 where obj#=73254;

1 row updated.

SQL> commit;

Commit complete.

SQL> 

二、修改段头,L1、L2块头的dataobj#

改完数据字典之后接下来就需要改L1 BMB、L2BMB、segment header的dataobj#了。

  L2 Array start offset:  0x00001434
  First Level 3 BMB:  0x00000000
  L2 Hint for inserts:  0x03c000a1
  Last Level 1 BMB:  0x03c000a0  <<<file 15 block 160
  Last Level II BMB:  0x03c000a1 <<<file 15 block 161
  Last Level III BMB:  0x00000000
     Map Header:: next  0x00000000  #extents: 27   obj#: 73259  flag: 0x10000000

通过truncate后的段头块dump确定

L2块 --offset 104

select dbms_utility.data_block_address_file(to_number('03c000a1','xxxxxxxx')) as file_id,dbms_utility.data_block_address_block(to_number('03c000a1','xxxxxxxx')) as block_id from dual;
   FILE_ID   BLOCK_ID
---------- ----------
        15        161

L1块 --offset 192

select dbms_utility.data_block_address_file(to_number('03c000a0','xxxxxxxx')) as file_id,dbms_utility.data_block_address_block(to_number('03c000a0','xxxxxxxx')) as block_id from dual;

   FILE_ID   BLOCK_ID
---------- ----------
        15        160

段头是 15,162 --offset 272

SQL> select to_char('73254','xxxxxxxx') old_dataobj,to_char('73259','xxxxxxxx') new_dataobj from dual;

OLD_DATAO NEW_DATAO
--------- ---------
    11e26     11e2b
[oracle@renCAP bbed]$ bbed parfile=par.bbed 
Password: 

BBED: Release 2.0.0.0.0 - Limited Production on Fri Jun 21 08:15:48 2019

Copyright (c) 1982, 2017, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

BBED> info all;
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------
     1  /data/REN/datafile/o1_mf_system_gjlsnfcr_.dbf                   104960
     9  /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_       32000
    10  /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_       47360
    11  /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_       12800
    12  /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_         640
    14  /data/cap_test.dbf                                              131072
    15  /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_       12800
    16  /data/bbed_test_tbs.dbf                                          12800

BBED> set dba 15,162  <<<修改段头
        DBA             0x03c000a2 (62914722 15,162)

BBED> d  offset 272
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:  272 to  783           Dba:0x03c000a2
------------------------------------------------------------------------
 2b1e0100 00000010 a000c003 08000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED>  m /x 26 offset 272
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:  272 to  783           Dba:0x03c000a2
------------------------------------------------------------------------
 261e0100 00000010 a000c003 08000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> set dba 15,161 <<<修改L2 BMB
        DBA             0x03c000a1 (62914721 15,161)

BBED> d offset 104
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 161              Offsets:  104 to  615           Dba:0x03c000a1
------------------------------------------------------------------------
 2b1e0100 03000000 00000000 a000c003 07000100 b000c003 01000100 c000c003 
 01000100 d000c003 01000100 e000c003 01000100 f000c003 01000100 0001c003 
 01000100 1001c003 01000100 8001c003 01000100 8101c003 01000100 0002c003 
 01000100 0102c003 01000100 8002c003 01000100 8102c003 01000100 0003c003 
 01000100 0103c003 01000100 8003c003 01000100 8103c003 01000100 0004c003 
 01000100 0104c003 01000100 8004c003 01000100 8104c003 01000100 0005c003 
 01000100 0105c003 01000100 8005c003 01000100 8105c003 01000100 0006c003 
 01000100 0106c003 01000100 8006c003 07000100 8106c003 07000100 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED>  m /x 26 offset 104
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 161              Offsets:  104 to  615           Dba:0x03c000a1
------------------------------------------------------------------------
 261e0100 03000000 00000000 a000c003 07000100 b000c003 01000100 c000c003 
 01000100 d000c003 01000100 e000c003 01000100 f000c003 01000100 0001c003 
 01000100 1001c003 01000100 8001c003 01000100 8101c003 01000100 0002c003 
 01000100 0102c003 01000100 8002c003 01000100 8102c003 01000100 0003c003 
 01000100 0103c003 01000100 8003c003 01000100 8103c003 01000100 0004c003 
 01000100 0104c003 01000100 8004c003 01000100 8104c003 01000100 0005c003 
 01000100 0105c003 01000100 8005c003 01000100 8105c003 01000100 0006c003 
 01000100 0106c003 01000100 8006c003 07000100 8106c003 07000100 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> set dba 15,160  <<<修改L1 BMB
        DBA             0x03c000a0 (62914720 15,160)

BBED> d offset 192
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 160              Offsets:  192 to  703           Dba:0x03c000a0
------------------------------------------------------------------------
 2b1e0100 05381a00 00000000 a000c003 08000000 00000000 a800c003 08000000 
 08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 11100000 11111111 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED>  m /x 26 offset 192
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 160              Offsets:  192 to  703           Dba:0x03c000a0
------------------------------------------------------------------------
 261e0100 05381a00 00000000 a000c003 08000000 00000000 a800c003 08000000 
 08000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 11100000 11111111 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> sum apply
Check value for File 15, Block 160:
current = 0x80ed, required = 0x80ed

BBED> verify
DBVERIFY - Verification starting
FILE = /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn66twm_.dbf
BLOCK = 162


DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 0
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED


BBED>      

SQL> alter system flush buffer_cache;

System altered.

--此处已经可以查询了,由于HWM依然没有改,这里还查不到数据

SQL> select count(*) from BBED_USER.BBED_TRUNC_TABLE;

COUNT(*)

----------

0

三、修改高水位线

Both the HWMs
Low HWM
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128   
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 1448  
  mapblk  0x00000000  offset: 26    
lfdba:  0x03c00680
High HWM
      Highwater::  0x03c006a8  ext#: 26     blk#: 40     ext size: 128   
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 1448  
  mapblk  0x00000000  offset: 26    
lfdba:  0x03c00680 hint dba:  0x03c000a1
Lasts in Header
LF: 62916225 LS: 62914721 LT: 0 FT: 0 
CHANGE #2 CON_ID:3 TYP:0 CLS:4 AFN:15 DBA:0x03c000a2 OBJ:73254 SCN:0x00000000001a3803 SEQ:2 OP:13.28 ENC:0 RBL:0 FLG:0x0000
Both the HWMs
Low HWM
      Highwater::  0x03c000a3  ext#: 0      blk#: 3      ext size: 8     
  #blocks in seg. hdr's freelists: 0     
  #blocks below: 0     
  mapblk  0x00000000  offset: 0     
lfdba:  0x03c000a0
High HWM
      Highwater::  0x03c000a3  ext#: 0      blk#: 3      ext size: 8
  #blocks in seg. hdr's freelists: 0
  #blocks below: 0 
  mapblk  0x00000000  offset: 0
lfdba:  0x03c000a0 hint dba:  0x03c000a1
Lasts in Header

这里信息依然是从归档dump中获取,可以看到HWM从“Highwater:: 0x03c006a8 ext#: 26 blk#: 40 ext size: 128 ”变成了“Highwater:: 0x03c000a3 ext#: 0 blk#: 3 ext size: 8”,我们只需吧HWM改回即可。

Highwater:: 0x03c006a8 ext#: 26 blk#: 40 ext size: 128

SQL> select to_char(26,'xxxxx') ext,to_char(40,'xxxxx') blk,to_char(128,'xxxxx') extsize from dual;

EXT    BLK    EXTSIZ
------ ------ ------
    1a     28     80

m /x 1a offset 48

m /x 28 offset 52

m /x 80 offset 56

m /x 2c06 offset 60

m /x 1a offset 92

m /x 28 offset 96

m /x 80 offset 100

m /x 2c06 offset 104

四、修改段头的extent map和Auxillary Map

修改完高水位线还要修改段头的extent map和 Auxillary Map

恢复extent map

grep -i 'ADD:' /opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_77919.trc

ADD: dba:0x3c00680 len:128 at offset:26

ADD: dba:0x3c00600 len:128 at offset:25

ADD: dba:0x3c00580 len:128 at offset:24

ADD: dba:0x3c00500 len:128 at offset:23

ADD: dba:0x3c00480 len:128 at offset:22

ADD: dba:0x3c00400 len:128 at offset:21

ADD: dba:0x3c00380 len:128 at offset:20

ADD: dba:0x3c00300 len:128 at offset:19

ADD: dba:0x3c00280 len:128 at offset:18

ADD: dba:0x3c00200 len:128 at offset:17

ADD: dba:0x3c00180 len:128 at offset:16

ADD: dba:0x3c00118 len:8 at offset:15

ADD: dba:0x3c00110 len:8 at offset:14

ADD: dba:0x3c00108 len:8 at offset:13

ADD: dba:0x3c00100 len:8 at offset:12

ADD: dba:0x3c000f8 len:8 at offset:11

ADD: dba:0x3c000f0 len:8 at offset:10

ADD: dba:0x3c000e8 len:8 at offset:9

ADD: dba:0x3c000e0 len:8 at offset:8

ADD: dba:0x3c000d8 len:8 at offset:7

ADD: dba:0x3c000d0 len:8 at offset:6

ADD: dba:0x3c000c8 len:8 at offset:5

ADD: dba:0x3c000c0 len:8 at offset:4

ADD: dba:0x3c000b8 len:8 at offset:3

ADD: dba:0x3c000b0 len:8 at offset:2

ADD: dba:0x3c000a8 len:8 at offset:1

--生成bbed修改语句

grep -i 'ADD:' ext | sort -k 5 -t ':' -n | awk '{print $2,$5,$3}' | awk -F 'len:' '{printf("%s %08x\n",$1,$2)}' | sed 's/dba://g' | sed 's/offset://g' | sed 's/0x//g' | sed 's/^/0/g' | awk '{print substr($1,7,2)substr($1,5,2),substr($1,3,2)substr($1,1,2) ,$2,substr($3,7,2)substr($3,5,2),substr($3,3,2)substr($3,3,2)}' |awk '{print "m /x "$1 " offset " 280+8*$3 "\nm /x " $2 " offset "280+8*$3+2 "\nm /x " $4 " offset " 280+8*$3+4 "\nm /x " $5 " offset " 280+8*$3+6}'

恢复Auxillary Map

grep -i 'ADDAXT:' /opt/app/oracle/diag/rdbms/ren/ren/trace/ren_ora_77919.trc

ADDAXT: offset:26 fdba:x03c00680 bdba:0x03c00682

ADDAXT: offset:25 fdba:x03c00600 bdba:0x03c00602

ADDAXT: offset:24 fdba:x03c00580 bdba:0x03c00582

ADDAXT: offset:23 fdba:x03c00500 bdba:0x03c00502

ADDAXT: offset:22 fdba:x03c00480 bdba:0x03c00482

ADDAXT: offset:21 fdba:x03c00400 bdba:0x03c00402

ADDAXT: offset:20 fdba:x03c00380 bdba:0x03c00382

ADDAXT: offset:19 fdba:x03c00300 bdba:0x03c00302

ADDAXT: offset:18 fdba:x03c00280 bdba:0x03c00282

ADDAXT: offset:17 fdba:x03c00200 bdba:0x03c00202

ADDAXT: offset:16 fdba:x03c00180 bdba:0x03c00182

ADDAXT: offset:15 fdba:x03c00110 bdba:0x03c00118

ADDAXT: offset:14 fdba:x03c00110 bdba:0x03c00111

ADDAXT: offset:13 fdba:x03c00100 bdba:0x03c00108

ADDAXT: offset:12 fdba:x03c00100 bdba:0x03c00101

ADDAXT: offset:11 fdba:x03c000f0 bdba:0x03c000f8

ADDAXT: offset:10 fdba:x03c000f0 bdba:0x03c000f1

ADDAXT: offset:9 fdba:x03c000e0 bdba:0x03c000e8

ADDAXT: offset:8 fdba:x03c000e0 bdba:0x03c000e1

ADDAXT: offset:7 fdba:x03c000d0 bdba:0x03c000d8

ADDAXT: offset:6 fdba:x03c000d0 bdba:0x03c000d1

ADDAXT: offset:5 fdba:x03c000c0 bdba:0x03c000c8

ADDAXT: offset:4 fdba:x03c000c0 bdba:0x03c000c1

ADDAXT: offset:3 fdba:x03c000b0 bdba:0x03c000b8

ADDAXT: offset:2 fdba:x03c000b0 bdba:0x03c000b1

ADDAXT: offset:1 fdba:x03c000a0 bdba:0x03c000a8

--生成bbed修改语句

grep -i 'ADDAXT:' aux |awk '{print$3 " " $4 " " $2}'|sort -k 4 -t ':' -n|uniq|sed 's/fdba:x//g'|sed 's/bdba:0x//g'|sed 's/offset://g' |awk '{print substr($1,7,2)substr($1,5,2),substr($1,3,2)substr($1,1,2),$3,substr($2,7,2)substr($2,5,2),substr($2,3,2)substr($2,1,2)}'|awk '{print "m /x "$1 " offset " 2736+8*$3 "\nm /x "$2 " offset " 2736+8*$3+2"\nm /x " $4 " offset " 2736+8*$3+4 "\nm /x " $5" offset " 2736+8*$3+6}'

到此在查询是可以查询到数据的,但是数据不全,因为只有一个extent,需要修改extent个数

五、恢复extent 个数

Highwater:: 0x03c006a8 ext#: 26 blk#: 40 ext size: 128

extent从0 开始 第27个

BBED> set dba 15,162 <<段头
        DBA             0x03c000a2 (62914722 15,162)

BBED> d offset 264
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:  264 to  775           Dba:0x03c000a2
------------------------------------------------------------------------
 01000000 00000000 261e0100 00000010 a000c003 08000000 a800c003 08000000 
 b000c003 08000000 b800c003 08000000 c000c003 08000000 c800c003 08000000 
 d000c003 08000000 d800c003 08000000 e000c003 08000000 e800c003 08000000 
 f000c003 08000000 f800c003 08000000 0001c003 08000000 0801c003 08000000 
 1001c003 08000000 1801c003 08000000 8001c003 80000000 0002c003 80000000 
 8002c003 80000000 0003c003 80000000 8003c003 80000000 0004c003 80000000 
 8004c003 80000000 0005c003 80000000 8005c003 80000000 0006c003 80000000 
 8006c003 80000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> m /x 1b offset 264
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:  264 to  775           Dba:0x03c000a2
------------------------------------------------------------------------
 1b000000 00000000 261e0100 00000010 a000c003 08000000 a800c003 08000000 
 b000c003 08000000 b800c003 08000000 c000c003 08000000 c800c003 08000000 
 d000c003 08000000 d800c003 08000000 e000c003 08000000 e800c003 08000000 
 f000c003 08000000 f800c003 08000000 0001c003 08000000 0801c003 08000000 
 1001c003 08000000 1801c003 08000000 8001c003 80000000 0002c003 80000000 
 8002c003 80000000 0003c003 80000000 8003c003 80000000 0004c003 80000000 
 8004c003 80000000 0005c003 80000000 8005c003 80000000 0006c003 80000000 
 8006c003 80000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> sum apply
Check value for File 15, Block 162:
current = 0xb6ca, required = 0xb6ca

BBED> 
BBED> d offset 36
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:   36 to  547           Dba:0x03c000a2
------------------------------------------------------------------------
 01000000 08000000 9c0a0000 1a000000 28000000 80000000 a806c003 00000000 
 00000000 00000000 00000000 07000d00 46020000 01000000 1a000000 28000000 
 80000000 a806c003 00000000 00000000 00000000 00000000 a000c003 a000c003 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 01000000 00200000 00000000 34140000 00000000 
 a100c003 01000000 a000c003 a100c003 00000000 00000000 00000000 00000000 
 00000000 1b000000 00000000 261e0100 00000010 a000c003 08000000 a800c003 
 08000000 b000c003 08000000 b800c003 08000000 c000c003 08000000 c800c003 
 08000000 d000c003 08000000 d800c003 08000000 e000c003 08000000 e800c003 
 08000000 f000c003 08000000 f800c003 08000000 0001c003 08000000 0801c003 
 08000000 1001c003 08000000 1801c003 08000000 8001c003 80000000 0002c003 
 80000000 8002c003 80000000 0003c003 80000000 8003c003 80000000 0004c003 
 80000000 8004c003 80000000 0005c003 80000000 8005c003 80000000 0006c003 
 80000000 8006c003 80000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> m /x 1b offset 36;
 File: /data/REN/8BA1F4113C38CFFCE0530A648C0A2156/datafile/o1_mf_bbed_tbs_gjn (15)
 Block: 162              Offsets:   36 to  547           Dba:0x03c000a2
------------------------------------------------------------------------
 1b000000 08000000 9c0a0000 1a000000 28000000 80000000 a806c003 00000000 
 00000000 00000000 00000000 07000d00 46020000 01000000 1a000000 28000000 
 80000000 a806c003 00000000 00000000 00000000 00000000 a000c003 a000c003 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 01000000 00200000 00000000 34140000 00000000 
 a100c003 01000000 a000c003 a100c003 00000000 00000000 00000000 00000000 
 00000000 1b000000 00000000 261e0100 00000010 a000c003 08000000 a800c003 
 08000000 b000c003 08000000 b800c003 08000000 c000c003 08000000 c800c003 
 08000000 d000c003 08000000 d800c003 08000000 e000c003 08000000 e800c003 
 08000000 f000c003 08000000 f800c003 08000000 0001c003 08000000 0801c003 
 08000000 1001c003 08000000 1801c003 08000000 8001c003 80000000 0002c003 
 80000000 8002c003 80000000 0003c003 80000000 8003c003 80000000 0004c003 
 80000000 8004c003 80000000 0005c003 80000000 8005c003 80000000 0006c003 
 80000000 8006c003 80000000 00000000 00000000 00000000 00000000 00000000 
 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 <32 bytes per line>

BBED> sum apply
Check value for File 15, Block 162:
current = 0xb6d0, required = 0xb6d0

刷新内存后数据恢复。

SQL> alter system flush buffer_cache;

System altered.

SQL>  select count(*) from  BBED_USER.BBED_TRUNC_TABLE;

  COUNT(*)
----------
     72629

SQL> 
SQL> 

恢复后立刻CTAS创建新表,由于未修改L1和L2块,该表无法drop insert等操作

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值