暂无图片
暂无图片
1
暂无图片
暂无图片
1
暂无图片

Truncate异常恢复四之BBED恢复

原创 肖杰 2021-11-30
791

Truncate异常恢复一之Truncate前后对比
Truncate异常恢复二之DBMS恢复
Truncate异常恢复三之GDUL恢复
Truncate异常恢复四之BBED恢复
Truncate异常恢复四之BBED恢复

构建测试表

SQL> create table devin.test_trun as select * from dba_objects; Table created. SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 72833 SQL> col segment_Name for a10 SQL> select segment_name,header_file,header_block from dba_segments where segment_name='TEST_TRUN'; SEGMENT_NA HEADER_FILE HEADER_BLOCK ---------- ----------- ------------ TEST_TRUN 9 130 SQL> select segment_name,extent_id,file_id,block_id,blocks from dba_extents where segment_name='TEST_TRUN'; SEGMENT_NA EXTENT_ID FILE_ID BLOCK_ID BLOCKS ---------- ---------- ---------- ---------- ---------- TEST_TRUN 0 8 128 8 TEST_TRUN 1 8 136 8 TEST_TRUN 2 8 144 8 TEST_TRUN 3 8 152 8 TEST_TRUN 4 8 160 8 TEST_TRUN 5 8 168 8 TEST_TRUN 6 8 176 8 TEST_TRUN 7 8 184 8 TEST_TRUN 8 8 192 8 TEST_TRUN 9 8 200 8 TEST_TRUN 10 8 208 8 TEST_TRUN 11 8 216 8 TEST_TRUN 12 8 224 8 TEST_TRUN 13 8 232 8 TEST_TRUN 14 8 240 8 TEST_TRUN 15 8 248 8 TEST_TRUN 16 8 256 128 TEST_TRUN 17 8 384 128 TEST_TRUN 18 8 512 128 TEST_TRUN 19 8 640 128 TEST_TRUN 20 8 768 128 TEST_TRUN 21 8 896 128 TEST_TRUN 22 8 1024 128 TEST_TRUN 23 8 1152 128 TEST_TRUN 24 8 1280 128 TEST_TRUN 25 8 1408 128 TEST_TRUN 26 8 1536 128 27 rows selected. SQL> select obj#,dataobj# from sys.obj$ where name='TEST_TRUN'; OBJ# DATAOBJ# ---------- ---------- 78623 78623
复制

DUMP SEGMENT HEADER

SQL> @flush System altered. System altered. SQL> @tracefile VALUE ------------------------------------------------------------------ /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1381.trc SQL> alter system dump datafile 8 block 130; System altered. [root@devin-enmo ~]# more /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1381.trc Trace file /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1381.trc Oracle Database 12c Enterprise Edition Release 12.2.0.1.0 - 64bit Production Build label: RDBMS_12.2.0.1.0_LINUX.X64_170125 ORACLE_HOME: /u01/app/oracle/product/12.2/dbhome_1 System name: Linux Node name: devin-enmo Release: 4.14.35-1818.3.3.el7uek.x86_64 Version: #2 SMP Mon Sep 24 14:45:01 PDT 2018 Machine: x86_64 Instance name: hkora Redo thread mounted by this instance: 1 Oracle process number: 26 Unix process pid: 1381, image: oracle@devin-enmo (TNS V1-V3) *** 2021-10-26T16:29:50.236396+08:00 *** SESSION ID:(266.10999) 2021-10-26T16:29:50.236408+08:00 *** CLIENT ID:() 2021-10-26T16:29:50.236411+08:00 *** SERVICE NAME:(SYS$USERS) 2021-10-26T16:29:50.236414+08:00 *** MODULE NAME:(sqlplus@devin-enmo (TNS V1-V3)) 2021-10-26T16:29:50.236417+08:00 *** ACTION NAME:() 2021-10-26T16:29:50.236420+08:00 *** CLIENT DRIVER:(SQL*PLUS) 2021-10-26T16:29:50.236422+08:00 Start dump data blocks tsn: 9 file#:8 minblk 130 maxblk 130 Block dump from cache: Dump of buffer cache at level 4 for pdb=0 tsn=9 rdba=33554562 BH (0x763e3898) file#: 8 rdba: 0x02000082 (8/130) class: 4 ba: 0x7619a000 set: 19 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0 dbwrid: 0 obj: 78623 objn: 78623 tsn: [0/9] afn: 8 hint: f hash: [0x767dc5c8,0x6e7b68e0] lru: [0x757f2e38,0x773f8378] ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL] st: CR md: NULL tch: 1 lfb: 43 cr: [scn: 0x285a964],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x285a964],[sfl: 0x0],[lc: 0x0] flags: Printing buffer operation history (latest change first): cnt: 16 01. sid:01 L965:MK_CRL:ulnk:objq 02. sid:01 L212:zib:bic:FSQ 03. sid:01 L122:zgb:set:st 04. sid:01 L830:olq1:clr:WRT+CKT 05. sid:01 L951:zgb:lnk:objq 06. sid:01 L372:zgb:set:MEXCL 07. sid:01 L123:zgb:no:FEN 08. sid:01 L083:zgb:ent:fn 09. sid:02 L662:kflb:bis:REU 10. sid:05 L338:zibmlt:set:MSHR 11. sid:05 L144:zibmlt:mk:EXCL 12. sid:05 L122:zgb:set:st 13. sid:05 L830:olq1:clr:WRT+CKT 14. sid:05 L951:zgb:lnk:objq 15. sid:05 L372:zgb:set:MEXCL 16. sid:05 L123:zgb:no:FEN BH (0x767dc518) file#: 8 rdba: 0x02000082 (8/130) class: 4 ba: 0x764f2000 set: 18 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0 dbwrid: 0 obj: 78623 objn: 78623 tsn: [0/9] afn: 8 hint: f hash: [0x76fe50a8,0x763e3948] lru: [0x773f5358,0x757f0658] ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL] st: CR md: NULL tch: 1 lfb: 43 cr: [scn: 0x285a963],[xid: 0x0.0.0],[uba: 0x0.0.0],[cls: 0x285a963],[sfl: 0x0],[lc: 0x0] flags: Printing buffer operation history (latest change first): cnt: 14 01. sid:01 L965:MK_CRL:ulnk:objq 02. sid:01 L212:zib:bic:FSQ 03. sid:01 L122:zgb:set:st 04. sid:01 L830:olq1:clr:WRT+CKT 05. sid:01 L951:zgb:lnk:objq 06. sid:01 L372:zgb:set:MEXCL 07. sid:01 L123:zgb:no:FEN 08. sid:01 L083:zgb:ent:fn 09. sid:02 L662:kflb:bis:REU 10. sid:11 L145:zib:mk:EXCL 11. sid:11 L212:zib:bic:FSQ 12. sid:11 L122:zgb:set:st 13. sid:11 L830:olq1:clr:WRT+CKT 14. sid:11 L951:zgb:lnk:objq 15. sid:11 L372:zgb:set:MEXCL 16. sid:11 L123:zgb:no:FEN BH (0x76fe4ff8) file#: 8 rdba: 0x02000082 (8/130) class: 4 ba: 0x76dbc000 set: 22 pool: 3 bsz: 8192 bsi: 0 sflg: 0 pwc: 0,0 dbwrid: 0 obj: 78623 objn: 78623 tsn: [0/9] afn: 8 hint: f hash: [0x6e7b68e0,0x767dc5c8] lru: [0x74fe20b8,0x757dc078] lru-flags: on_auxiliary_list ckptq: [NULL] fileq: [NULL] objq: [NULL] objaq: [NULL] st: FREE md: NULL fpin: 'ktswh03: ktscts' fscn: 0x285a4c3 tch: 0 lfb: 69 flags: Printing buffer operation history (latest change first): cnt: 7 01. sid:02 L662:kflb:bis:REU 02. sid:12 L192:kcbbic2:bic:FBD 03. sid:12 L191:kcbbic2:bic:FBW 04. sid:12 L602:bic1_int:bis:FWC 05. sid:12 L822:bic1_int:ent:rtn 06. sid:12 L832:oswmqbg1:clr:WRT 07. sid:12 L930:kubc:sw:mq 08. sid:12 L913:bxsv:sw:objq 09. sid:12 L608:bxsv:bis:FBW 10. sid:12 L607:bxsv:bis:FFW 11. sid:05 L464:chg1_mn:bic:FMS 12. sid:05 L778:chg1_mn:bis:FMS 13. sid:05 L353:gcur:set:MEXCL 14. sid:05 L464:chg1_mn:bic:FMS 15. sid:05 L778:chg1_mn:bis:FMS 16. sid:05 L353:gcur:set:MEXCL Block dump from disk: buffer tsn: 9 rdba: 0x02000082 (8/130) scn: 0x285a5f7 seq: 0x03 flg: 0x04 tail: 0xa5f72303 frmt: 0x02 chkval: 0x971f type: 0x23=PAGETABLE SEGMENT HEADER Hex dump of block: st=0, typ_found=1 Dump of memory from 0x00007F5BF9D89000 to 0x00007F5BF9D8B000 7F5BF9D89000 0000A223 02000082 0285A5F7 04030000 [#...............] ... ... Extent Control Header ----------------------------------------------------------------- Extent Header:: spare1: 0 spare2: 0 #extents: 27 #blocks: 1536 last map 0x00000000 #maps: 0 offset: 2716 Highwater:: 0x0200062c ext#: 26 blk#: 44 ext size: 128 #blocks in seg. hdr's freelists: 0 #blocks below: 1452 mapblk 0x00000000 offset: 26 Disk Lock:: Locked by xid: 0x0009.01c.00000b19 -------------------------------------------------------- Low HighWater Mark : Highwater:: 0x0200062c ext#: 26 blk#: 44 ext size: 128 #blocks in seg. hdr's freelists: 0 #blocks below: 1452 mapblk 0x00000000 offset: 26 Level 1 BMB for High HWM block: 0x02000600 Level 1 BMB for Low HWM block: 0x02000600 -------------------------------------------------------- Segment Type: 1 nl2: 1 blksz: 8192 fbsz: 0 L2 Array start offset: 0x00001434 First Level 3 BMB: 0x00000000 L2 Hint for inserts: 0x02000081 Last Level 1 BMB: 0x02000601 Last Level II BMB: 0x02000081 Last Level III BMB: 0x00000000 Map Header:: next 0x00000000 #extents: 27 obj#: 78623 flag: 0x10000000 Inc # 0 Extent Map ----------------------------------------------------------------- 0x02000080 length: 8 0x02000088 length: 8 0x02000090 length: 8 0x02000098 length: 8 0x020000a0 length: 8 0x020000a8 length: 8 0x020000b0 length: 8 0x020000b8 length: 8 0x020000c0 length: 8 0x020000c8 length: 8 0x020000d0 length: 8 0x020000d8 length: 8 0x020000e0 length: 8 0x020000e8 length: 8 0x020000f0 length: 8 0x020000f8 length: 8 0x02000100 length: 128 0x02000180 length: 128 0x02000200 length: 128 0x02000280 length: 128 0x02000300 length: 128 0x02000380 length: 128 0x02000400 length: 128 0x02000480 length: 128 0x02000500 length: 128 0x02000580 length: 128 0x02000600 length: 128 Auxillary Map -------------------------------------------------------- Extent 0 : L1 dba: 0x02000080 Data dba: 0x02000083 Extent 1 : L1 dba: 0x02000080 Data dba: 0x02000088 Extent 2 : L1 dba: 0x02000090 Data dba: 0x02000091 Extent 3 : L1 dba: 0x02000090 Data dba: 0x02000098 Extent 4 : L1 dba: 0x020000a0 Data dba: 0x020000a1 Extent 5 : L1 dba: 0x020000a0 Data dba: 0x020000a8 Extent 6 : L1 dba: 0x020000b0 Data dba: 0x020000b1 Extent 7 : L1 dba: 0x020000b0 Data dba: 0x020000b8 Extent 8 : L1 dba: 0x020000c0 Data dba: 0x020000c1 Extent 9 : L1 dba: 0x020000c0 Data dba: 0x020000c8 Extent 10 : L1 dba: 0x020000d0 Data dba: 0x020000d1 Extent 11 : L1 dba: 0x020000d0 Data dba: 0x020000d8 Extent 12 : L1 dba: 0x020000e0 Data dba: 0x020000e1 Extent 13 : L1 dba: 0x020000e0 Data dba: 0x020000e8 Extent 14 : L1 dba: 0x020000f0 Data dba: 0x020000f1 Extent 15 : L1 dba: 0x020000f0 Data dba: 0x020000f8 Extent 16 : L1 dba: 0x02000100 Data dba: 0x02000102 Extent 17 : L1 dba: 0x02000180 Data dba: 0x02000182 Extent 18 : L1 dba: 0x02000200 Data dba: 0x02000202 Extent 19 : L1 dba: 0x02000280 Data dba: 0x02000282 Extent 20 : L1 dba: 0x02000300 Data dba: 0x02000302 Extent 21 : L1 dba: 0x02000380 Data dba: 0x02000382 Extent 22 : L1 dba: 0x02000400 Data dba: 0x02000402 Extent 23 : L1 dba: 0x02000480 Data dba: 0x02000482 Extent 24 : L1 dba: 0x02000500 Data dba: 0x02000502 Extent 25 : L1 dba: 0x02000580 Data dba: 0x02000582 Extent 26 : L1 dba: 0x02000600 Data dba: 0x02000602 -------------------------------------------------------- Second Level Bitmap block DBAs -------------------------------------------------------- DBA 1: 0x02000081 End dump data blocks tsn: 9 file#: 8 minblk 130 maxblk 130
复制

执行TRUNCATE

SQL> alter system switch logfile; System altered. SQL> select group#,status from v$log; GROUP# STATUS ---------- ---------------- 1 INACTIVE 2 INACTIVE 3 CURRENT SQL> select group#,member from v$logfile; GROUP# MEMBER ---------- ------------------------------------------------------------------------------ 1 /u01/app/oracle/oradata/HKORA/onlinelog/o1_mf_1_hvyllq9j_.log 3 /u01/app/oracle/oradata/HKORA/onlinelog/o1_mf_3_j7z2qcb9_.log 2 /u01/app/oracle/oradata/HKORA/onlinelog/o1_mf_2_hvyllqbz_.log # 便于测试,truncate前后记录一下scn SQL> select timestamp_to_scn(to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')) scn from dual; SCN ---------- 42308854 SQL> truncate table devin.test_trun; Table truncated. SQL> select timestamp_to_scn(to_timestamp(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss')) scn from dual; SCN ---------- 42308928 SQL> alter tablespace devin read only; Tablespace altered.
复制

恢复

​ 经过前面的分析,需要恢复的元数据块和数据字典基表以及内容为:

  • segment header(dataobj#,LHWM,HHWM,extent map,aux map以及extents个数)
  • tab$(dataobj#)
  • obj$(dataobj#)

恢复数据字典

# 数据字典恢复通过logminer挖掘redo,也可以通过redo dump来恢复,这里采用redo dump SQL> @tracefile VALUE ------------------------------------------------------------------------ /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1793.trc SQL> alter system dump logfile '/u01/app/oracle/oradata/HKORA/onlinelog/o1_mf_3_j7z2qcb9_.log' scn min 42308854 scn max 42308928; System altered. [root@devin-enmo ~]# grep -i 'CDOBJ' /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1793.trc CDOBJ: new object number:78623 CDOBJ: new object number:78624 # 可以看到dataobj#从78623变成了78624,需要将段头和基表obj$,tab$的dataobj#恢复成78623 SQL> select obj#,dataobj# from sys.obj$ where obj#=78623; OBJ# DATAOBJ# ---------- ---------- 78623 78624 SQL> select obj#,dataobj# from sys.tab$ where obj#=78623; OBJ# DATAOBJ# ---------- ---------- 78623 78624 SQL> update sys.obj$ set dataobj#=78623 where obj#=78623; 1 row updated. SQL> update sys.tab$ set dataobj#=78623 where obj#=78623; 1 row updated. SQL> commit; Commit complete. SQL> @flush System altered. System altered.
复制

恢复相关块的dataobj#

# truncate会修改段头,L2和第一个L1的dataobj# SQL> select to_char('78623','xxxxxxxx') old_dataobj,to_char('78624','xxxxxxxx') new_dataobj from dual; OLD_DATAO NEW_DATAO --------- --------- 1331f 13320 [oracle@devin-enmo bbed]$ bbed BBED: Release 2.0.0.0.0 - Limited Production on Tue Oct 26 09:02:00 2021 Copyright (c) 1982, 2017, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> info File# Name Size(blks) ----- ---- ---------- 1 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_system_hvylgg 0 2 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_ccps_par_hvyl 0 3 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_sysaux_hvyljh 0 4 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_undotbs1_hvyl 0 5 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_ccps_dat_hvyl 0 7 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_users_hvylkn9 0 10 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_ccps_inx_hvyl 0 8 /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_hwyb1by 0 BBED> set file 8 block 130 FILE# 9 BLOCK# 130 BBED> d offset 272 count 8 File: /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_hwyb1byq_.dbf (8) Block: 130 Offsets: 272 to 279 Dba:0x02400082 ------------------------------------------------------------------------ 20330100 00000010 <32 bytes per line> BBED> m /x 1f offset 272 Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y File: /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_hwyb1byq_.dbf (8) Block: 130 Offsets: 272 to 279 Dba:0x02400082 ------------------------------------------------------------------------ 1f330100 00000010 <32 bytes per line> BBED> sum apply Check value for File 8, Block 130: current = 0x929f, required = 0x929f ## 同样方式恢复L2和第一个L1的dataobj# L2: m /x 1f offset 104 L1: m /x 1f offset 192 SQL> @flush System altered. System altered. SQL> select count(*) from devin; COUNT(*) ---------- 0 ## 此时对象可以查询,但是因为没有恢复高水位,所以数据条数为0
复制

恢复高水位

## 高水位块的辨别,可以设置到最后一个Extnets的最后一个块,这个信息的准确性其实无所谓,全表扫描的时候它一定会扫描这个块下面所有的块。 [root@devin-enmo ~]# grep -E 'Low HWM|Highwater|High HWM' /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1793.trc Low HWM Highwater:: 0x0200062c ext#: 26 blk#: 44 ext size: 128 High HWM Highwater:: 0x0200062c ext#: 26 blk#: 44 ext size: 128 Low HWM Highwater:: 0x02000083 ext#: 0 blk#: 3 ext size: 8 High HWM Highwater:: 0x02000083 ext#: 0 blk#: 3 ext size: 8 ##恢复 SQL> select to_char(26,'xxxxx') ext,to_char(44,'xxxxx') blk,to_char(128,'xxxxx') extsize from dual; EXT BLK EXTSIZ ------ ------ ------ 1a 2c 80 m /x 1a offset 48 m /x 2c offset 52 m /x 80 offset 56 m /x 2c06 offset 60 m /x 1a offset 92 m /x 2c offset 96 m /x 80 offset 100 m /x 2c06 offset 104
复制

恢复extent map

BBED> d offset 280 count 400 File: /u01/app/oracle/oradata/HKORA/datafile/o1_mf_devin_jqhgnz7m_.dbf (8) Block: 130 Offsets: 280 to 679 Dba:0x02000082 ------------------------------------------------------------------------ 80000002 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 <32 bytes per line> ## 通过redo可以看到extent map已经被清空,ext map可以从redo dump获取,并且是从最后一个ext map开始倒序清空的 [oracle@devin-enmo script]$ grep -i 'ADD:' /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_6495.trc ADD: dba:0x2400680 len:128 at offset:26 ADD: dba:0x2400600 len:128 at offset:25 ADD: dba:0x2400580 len:128 at offset:24 ADD: dba:0x2400500 len:128 at offset:23 ADD: dba:0x2400480 len:128 at offset:22 ADD: dba:0x2400400 len:128 at offset:21 ADD: dba:0x2400380 len:128 at offset:20 ADD: dba:0x2400300 len:128 at offset:19 ADD: dba:0x2400280 len:128 at offset:18 ADD: dba:0x2400200 len:128 at offset:17 ADD: dba:0x2400180 len:128 at offset:16 ADD: dba:0x2400100 len:8 at offset:15 ADD: dba:0x24000f8 len:8 at offset:14 ADD: dba:0x24000f0 len:8 at offset:13 ADD: dba:0x24000e8 len:8 at offset:12 ADD: dba:0x24000e0 len:8 at offset:11 ADD: dba:0x24000d8 len:8 at offset:10 ADD: dba:0x24000d0 len:8 at offset:9 ADD: dba:0x24000c8 len:8 at offset:8 ADD: dba:0x24000c0 len:8 at offset:7 ADD: dba:0x24000b8 len:8 at offset:6 ADD: dba:0x24000b0 len:8 at offset:5 ADD: dba:0x24000a8 len:8 at offset:4 ADD: dba:0x2400098 len:8 at offset:3 ADD: dba:0x2400090 len:8 at offset:2 ADD: dba:0x2400088 len:8 at offset:1 ## 构建bbed命令 [root@devin-enmo ~]# grep -i 'ADD:' /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1793.trc | 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}' m /x 8800 offset 288 m /x 0002 offset 290 m /x 0800 offset 292 m /x 0000 offset 294 m /x 9000 offset 296 ... ... m /x 0000 offset 494
复制

恢复aux map

[root@devin-enmo ~]# grep -i 'ADDAXT:' /u01/app/oracle/diag/rdbms/hkora/hkora/trace/hkora_ora_1793.trc |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}' m /x 8000 offset 2744 m /x 0002 offset 2746 m /x 8800 offset 2748 m /x 0002 offset 2750 m /x 9000 offset 2752 m /x 0002 offset 2754 ... ... m /x 0002 offset 2950
复制

恢复extent个数

Highwater:: 0x0200062c ext#: 26 blk#: 44 ext size: 128 # extent从0开始,即27个 BBED>m /x 1b offset 264
复制

验证

SQL> select count(*) from devin.test_trun; COUNT(*) ---------- 72833 ## 数据恢复成功,但是没有恢复L1,L2,insert会有问题,但是全表扫描不读L1,L2,所以恢复成功后立即做个ctas ## 注意需要在其它表空间CTAS,原表空间ctas会报错:ORA-00600: internal error code, arguments: [ktsscrsegfmt:objdchk_kcbnew_3], [0], [78627], [4], [4], [8], [], [], [], [], [], [] SQL> create table sys.test_trun_bak as select * from devin.test_trun; Table created.
复制
最后修改时间:2021-11-30 08:40:23
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

墨天轮福利君
暂无图片
3年前
评论
暂无图片 0
您好,您的文章已入选合格奖,10墨值奖励已经到账请查收! ❤️我们还会实时派发您的流量收益。
3年前
暂无图片 点赞
评论