【BBED】 SYSTEM文件头损坏的恢复(4)

【BBED】 SYSTEM文件头损坏的恢复

 

一.1  BLOG文档结构图

【BBED】 SYSTEM文件头损坏的恢复(4) 

 

一.2  前言部分

 

一.2.1  导读和注意事项

各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~:

① BBED恢复SYSTEM文件头

② BBED查看文件头的信息

 

  Tips:

       ① 若文章代码格式有错乱,推荐使用QQ、搜狗或360浏览器,也可以下载pdf格式的文档来查看,pdf文档下载地址:http://yunpan.cn/cdEQedhCs2kFz (提取码:ed9b) 

       ② 本篇BLOG中命令的输出部分需要特别关注的地方我都用灰色背景和粉红色字体来表示,比如下边的例子中,thread 1的最大归档日志号为33,thread 2的最大归档日志号为43是需要特别关注的地方;而命令一般使用黄色背景和红色字体标注;对代码或代码输出部分的注释一般采用蓝色字体表示。

 

  List of Archived Logs in backup set 11

  Thrd Seq     Low SCN    Low Time            Next SCN   Next Time

  ---- ------- ---------- ------------------- ---------- ---------

  1    32      1621589    2015-05-29 11:09:52 1625242    2015-05-29 11:15:48

  1    33      1625242    2015-05-29 11:15:48 1625293    2015-05-29 11:15:58

  2    42      1613951    2015-05-29 10:41:18 1625245    2015-05-29 11:15:49

  2    43      1625245    2015-05-29 11:15:49 1625253    2015-05-29 11:15:53

 

 

 

 

[ZFXXDB1:root]:/>lsvg -o

T_XDESK_APP1_vg

rootvg

[ZFXXDB1:root]:/>

00:27:22 SQL> alter tablespace idxtbs read write;

 

 

====》2097152*512/1024/1024/1024=1G 

 

 

 

本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。

 

 

一.2.2  相关参考文章链接

【推荐】 【BBED】 sys.bootstrap$ 对象的恢复:http://blog.itpub.net/26736162/viewspace-2083621/

【推荐】 【BBED】丢失归档文件情况下的恢复:http://blog.itpub.net/26736162/viewspace-2079337/

【推荐】 【BBED】编译及基本命令(1):http://blog.itpub.net/26736162/viewspace-2075216/

一.2.3  本文简介

本文的实验过程主要是为了学习BBED,大家学完做完这1篇还有之前的3篇blog,那么BBED基本算是入门了,恭喜。

 

 

一.3  相关知识点扫盲(摘自网络)

 【BBED】 SYSTEM文件头损坏的恢复(4)---------------------------------------------------------------------------------------------------------------------

 

 

第二章 实验部分

二.1  实验环境介绍

项目

db

db 类型

单实例

db version

11.2.0.4.0

db 存储

FS

主机IP地址/hosts配置

192.168.59.129

OS版本及kernel版本

AIX 7.1 64位

归档模式

Archive Mode

ORACLE_SID

oralhr

 

 

二.2  实验目标

破坏SYSTEM的文件头,然后利用SYSAUX文件的文件头来恢复SYSTEM文件头。

 

二.3  实验过程

二.3.1  冷备system文件

[ZHLHRDB2:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 14 16:10:07 2016

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

 

Connected to:

Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

 

SYS@oralhr> shutdown immediate

Database closed.

Database dismounted.

ORACLE instance shut down.

SYS@oralhr> exit

Disconnected from Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

With the Partitioning, Real Application Clusters, OLAP, Data Mining

and Real Application Testing options

[ZHLHRDB2:oracle]:/oracle>cp /oracle/app/oracle/datafile/oralhr/system01.dbf /oracle/app/oracle/datafile/oralhr/system01.dbf_bk

[ZHLHRDB2:oracle]:/oracle>

[ZHLHRDB2:oracle]:/oracle>sqlplus / as sysdba

 

SQL*Plus: Release 11.2.0.4.0 Production on Thu Apr 14 16:34:04 2016

 

Copyright (c) 1982, 2013, Oracle.  All rights reserved.

 

Connected to an idle instance.

 

SYS@oralhr> startup

ORACLE instance started.

 

Total System Global Area 3089920000 bytes

Fixed Size                  2250360 bytes

Variable Size             721422728 bytes

Database Buffers         2348810240 bytes

Redo Buffers               17436672 bytes

Database mounted.

Database opened.

SYS@oralhr>

SYS@oralhr> set line 9999 pagesize 9999

SYS@oralhr> col name format a80

SYS@oralhr> select file#||' '||name||' '||bytes name from v$datafile;

 

NAME

--------------------------------------------------------------------------------

1 /oracle/app/oracle/datafile/oralhr/system01.dbf 786432000

2 /oracle/app/oracle/datafile/oralhr/sysaux01.dbf 576716800

3 /oracle/app/oracle/datafile/oralhr/undotbs01.dbf 78643200

4 /oracle/app/oracle/datafile/oralhr/users01.dbf 310640640

 

SYS@oralhr>

 

二.3.2  模拟故障

[ZHLHRDB2:oracle]:/home/oracle>l

total 208

-rwxrwxrwx    1 oracle   dba              57 Apr 05 17:01 bbed.par

-rwxrwxrwx    1 oracle   dba           52224 Apr 14 15:55 bifile.bbd

-rwxrwxrwx    1 oracle   asmadmin       5715 Apr 06 15:34 ctl.sql

-rwxrwxrwx    1 oracle   dba             302 Apr 14 10:32 file.txt

drwxrwxrwx    8 oracle   dba            4096 Apr 13 17:16 gdul

-rwxrwxrwx    1 oracle   dba           21008 Apr 14 16:35 log.bbd

drwxrwxrwx    4 oracle   dba             256 Apr 12 15:52 oracle_bk

drwxrwxrwx    4 oracle   dba             256 Apr 05 16:54 rman_bak

-rwxrwxrwx    1 oracle   dba             757 Apr 11 10:02 rman_bk_db_archive_lhr.sh

-rwxrwxrwx    1 oracle   dba            1023 Apr 08 11:25 rman_bk_db_lhr.sh

[ZHLHRDB2:oracle]:/home/oracle>cat file.txt

1 /oracle/app/oracle/datafile/oralhr/system01.dbf 786432000

2 /oracle/app/oracle/datafile/oralhr/sysaux01.dbf 566231040

3 /oracle/app/oracle/datafile/oralhr/undotbs01.dbf 78643200

4 /oracle/app/oracle/datafile/oralhr/users01.dbf 310640640

5 /oracle/app/oracle/datafile/oralhr/system01.dbf_bk 786432000

[ZHLHRDB2:oracle]:/home/oracle>bbed PASSWORD=blockedit  mode=edit blocksize=8192 listfile=/home/oracle/file.txt

 

BBED: Release 2.0.0.0.0 - Limited Production on Thu Apr 14 16:36:00 2016

 

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

 

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

 

BBED> info

File#  Name                                                        Size(blks)

-----  ----                                                        ----------

     1  /oracle/app/oracle/datafile/oralhr/system01.dbf                  96000

     2  /oracle/app/oracle/datafile/oralhr/sysaux01.dbf                  69120

     3  /oracle/app/oracle/datafile/oralhr/undotbs01.dbf                  9600

     4  /oracle/app/oracle/datafile/oralhr/users01.dbf                   37920

     5  /oracle/app/oracle/datafile/oralhr/system01.dbf_bk               96000

BBED> help copy

COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]

 

BBED> set count 128

        COUNT           128

 

BBED> copy file 1 block 111 to  file 1 block 1

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) Y

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 377              Offsets:    0 to  127           Dba:0x00400179

------------------------------------------------------------------------

1ea20000 0040006f 000000e2 00000104 fa4c0000 00000001 03450080 00000000

00000000 0000f800 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 1, Block 380:

current = 0xfa4c, required = 0xfa4c

 

BBED>

BBED>

 

重启数据库:

SYS@oralhr> startup force

ORACLE instance started.

 

Total System Global Area 3089920000 bytes

Fixed Size                  2250360 bytes

Variable Size             721422728 bytes

Database Buffers         2348810240 bytes

Redo Buffers               17436672 bytes

Database mounted.

ORA-01092: ORACLE instance terminated. Disconnection forced

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/oracle/app/oracle/datafile/oralhr/system01.dbf'

ORA-01210: data file header is media corrupt

 

 

SYS@oralhr>

 

告警日志:

Fri Apr 15 08:52:22 2016

ALTER DATABASE OPEN

Read of datafile '/oracle/app/oracle/datafile/oralhr/system01.dbf' (fno 1) header failed with ORA-01210

Hex dump of (file 1, block 1) in trace file /oracle/app/oracle/diag/rdbms/oralhr/oralhr/trace/oralhr_ora_7602280.trc

Corrupt block relative dba: 0x00400001 (file 1, block 1)

Bad header found during datafile header read

Data in bad block:

type: 30 format: 2 rdba: 0x0040006f

last change scn: 0x0000.000000e2 seq: 0x1 flg: 0x04

spare1: 0x0 spare2: 0x0 spare3: 0x0

consistency value in tail: 0x00e21e01

check value in block header: 0xfa4c

computed block checksum: 0x0

Rereading datafile 1 header failed with ORA-01210

Errors in file /oracle/app/oracle/diag/rdbms/oralhr/oralhr/trace/oralhr_ora_7602280.trc:

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/oracle/app/oracle/datafile/oralhr/system01.dbf'

ORA-01210: data file header is media corrupt

ORA-1122 signalled during: ALTER DATABASE OPEN...

Fri Apr 15 08:52:23 2016

Checker run found 1 new persistent data failures

 

ORA-01210: data file header is media corrupt 文件头有介质损坏,下边用BBED来恢复。

二.3.3  故障恢复

[ZHLHRDB2:oracle]:/home/oracle>bbed PASSWORD=blockedit  mode=edit blocksize=8192 listfile=/home/oracle/file.txt

 

BBED: Release 2.0.0.0.0 - Limited Production on Thu Apr 14 16:42:59 2016

 

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

 

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

 

BBED> info

File#  Name                                                        Size(blks)

-----  ----                                                        ----------

     1  /oracle/app/oracle/datafile/oralhr/system01.dbf                  96000

     2  /oracle/app/oracle/datafile/oralhr/sysaux01.dbf                  69120

     3  /oracle/app/oracle/datafile/oralhr/undotbs01.dbf                  9600

     4  /oracle/app/oracle/datafile/oralhr/users01.dbf                   37920

     5  /oracle/app/oracle/datafile/oralhr/system01.dbf_bk               96000

 

BBED> set count 128

        COUNT           128

 

BBED>

BBED> set dba 1,1

        DBA             0x00400001 (4194305 1,1)

 

BBED> map /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                                     Dba:0x00400001

------------------------------------------------------------

BBED-00400: invalid blocktype (30)

BBED>

 

可以看到dba 1,1是一个非法的块类型,下边利用BBED将SYSAUX上的FILE HEADER拷贝到SYSTEM上,然后修改文件头相关的内容:

 

 

BBED> copy file 2 block 1 to  file 1 block 1

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:    0 to  511           Dba:0x00400001

------------------------------------------------------------------------

0ba20000 00800001 00000000 00000104 ed220000 00000000 0b200400 1793c969

4f52414c 48520000 0000093b 00011300 00002000 00020003 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000716 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000

00000000 00000000 00000004 000000a6 3630b88e 000000a5 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000001 00065359 53415558 00000000 00000000

00000000 00000000 00000000 00000000 00000002 00000000 00000000 00000000

00000000 0000b7e0 00000000 00000000 00000000 00000000 00000000 00000000

3155bebd 00000001 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 0013e5a8 0000c388 363142ec 00010000 0000002d 00000002 00100000

 

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xed22, required = 0xed22

 

BBED> map /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                                     Dba:0x00400001

------------------------------------------------------------

Data File Header

 

struct kcvfh, 860 bytes                    @0      

    struct kcvfhbfh, 20 bytes               @0      

    struct kcvfhhdr, 76 bytes               @20     

    ub4 kcvfhrdb                            @96     

    struct kcvfhcrs, 8 bytes                @100    

    ub4 kcvfhcrt                            @108    

    ub4 kcvfhrlc                            @112    

    struct kcvfhrls, 8 bytes                @116    

    ub4 kcvfhbti                            @124    

    struct kcvfhbsc, 8 bytes                @128    

    ub2 kcvfhbth                            @136    

    ub2 kcvfhsta                            @138    

    struct kcvfhckp, 160 bytes              @484    

    ub4 kcvfhcpc                            @140    

    ub4 kcvfhrts                            @144    

    ub4 kcvfhccc                            @148    

    struct kcvfhbcp, 160 bytes              @152    

    ub4 kcvfhbhz                            @312    

    struct kcvfhxcd, 16 bytes               @316    

    sword kcvfhtsn                          @332    

    ub2 kcvfhtln                            @336    

    text kcvfhtnm[30]                       @338    

    ub4 kcvfhrfn                            @368    

    struct kcvfhrfs, 8 bytes                @372    

    ub4 kcvfhrft                            @380    

    struct kcvfhafs, 8 bytes                @384    

    ub4 kcvfhbbc                            @392    

    ub4 kcvfhncb                            @396    

    ub4 kcvfhmcb                            @400    

    ub4 kcvfhlcb                            @404    

    ub4 kcvfhbcs                            @408    

    ub2 kcvfhofb                            @412    

    ub2 kcvfhnfb                            @414    

    ub4 kcvfhprc                            @416    

    struct kcvfhprs, 8 bytes                @420    

    struct kcvfhprfs, 8 bytes               @428    

    ub4 kcvfhtrt                            @444    

 

ub4 tailchk                                @8188   

 

 

BBED>

BBED> p kcvfh

struct kcvfh, 860 bytes                     @0      

   struct kcvfhbfh, 20 bytes                @0      

      ub1 type_kcbh                         @0        0x0b

      ub1 frmt_kcbh                         @1        0xa2

      ub1 spare1_kcbh                       @2        0x00

      ub1 spare2_kcbh                       @3        0x00

      ub4 rdba_kcbh                         @4        0x00800001

      ub4 bas_kcbh                          @8        0x00000000

      ub2 wrp_kcbh                          @12       0x0000

      ub1 seq_kcbh                          @14       0x01

      ub1 flg_kcbh                          @15       0x04 (KCBHFCKV)

      ub2 chkval_kcbh                       @16       0xed22

      ub2 spare3_kcbh                       @18       0x0000

   struct kcvfhhdr, 76 bytes                @20     

      ub4 kccfhswv                          @20       0x00000000

      ub4 kccfhcvn                          @24       0x0b200400

      ub4 kccfhdbi                          @28       0x1793c969

      text kccfhdbn[0]                      @32      O

      text kccfhdbn[1]                      @33      R

      text kccfhdbn[2]                      @34      A

      text kccfhdbn[3]                      @35      L

      text kccfhdbn[4]                      @36      H

      text kccfhdbn[5]                      @37      R

      text kccfhdbn[6]                      @38      

      text kccfhdbn[7]                      @39      

      ub4 kccfhcsq                          @40       0x0000093b

      ub4 kccfhfsz                          @44       0x00011300

      s_blkz kccfhbsz                       @48       0x00

      ub2 kccfhfno                          @52       0x0002

      ub2 kccfhtyp                          @54       0x0003

      ub4 kccfhacid                         @56       0x00000000

      ub4 kccfhcks                          @60       0x00000000

      text kccfhtag[0]                      @64      

      text kccfhtag[1]                      @65      

      text kccfhtag[2]                      @66      

      text kccfhtag[3]                      @67      

      text kccfhtag[4]                      @68      

      text kccfhtag[5]                      @69      

      text kccfhtag[6]                      @70      

      text kccfhtag[7]                      @71      

      text kccfhtag[8]                      @72      

      text kccfhtag[9]                      @73      

      text kccfhtag[10]                     @74      

      text kccfhtag[11]                     @75      

      text kccfhtag[12]                     @76      

      text kccfhtag[13]                     @77      

      text kccfhtag[14]                     @78      

      text kccfhtag[15]                     @79      

      text kccfhtag[16]                     @80      

      text kccfhtag[17]                     @81      

      text kccfhtag[18]                     @82      

      text kccfhtag[19]                     @83      

      text kccfhtag[20]                     @84      

      text kccfhtag[21]                     @85      

      text kccfhtag[22]                     @86      

      text kccfhtag[23]                     @87      

      text kccfhtag[24]                     @88      

      text kccfhtag[25]                     @89      

      text kccfhtag[26]                     @90      

      text kccfhtag[27]                     @91      

      text kccfhtag[28]                     @92      

      text kccfhtag[29]                     @93      

      text kccfhtag[30]                     @94      

      text kccfhtag[31]                     @95      

   ub4 kcvfhrdb                             @96       0x00000000

   struct kcvfhcrs, 8 bytes                 @100    

      ub4 kscnbas                           @100      0x00000716

      ub2 kscnwrp                           @104      0x0000

   ub4 kcvfhcrt                             @108      0x3155becc

   ub4 kcvfhrlc                             @112      0x362e0deb

   struct kcvfhrls, 8 bytes                 @116    

      ub4 kscnbas                           @116      0x000e20dc

      ub2 kscnwrp                           @120      0x0000

   ub4 kcvfhbti                             @124      0x00000000

   struct kcvfhbsc, 8 bytes                 @128    

      ub4 kscnbas                           @128      0x00000000

      ub2 kscnwrp                           @132      0x0000

   ub2 kcvfhbth                             @136      0x0000

   ub2 kcvfhsta                             @138      0x0004 (KCVFHOFZ)

   struct kcvfhckp, 160 bytes               @484    

      struct kcvcpscn, 8 bytes              @484    

         ub4 kscnbas                        @484      0x0013e5a8

         ub2 kscnwrp                        @488      0x0000

      ub4 kcvcptim                          @492      0x363142ec

      ub2 kcvcpthr                          @496      0x0001

      union u, 12 bytes                     @500    

         struct kcvcprba, 12 bytes          @500    

            ub4 kcrbaseq                    @500      0x0000002d

            ub4 kcrbabno                    @504      0x00000002

            ub2 kcrbabof                    @508      0x0010

      ub1 kcvcpetb[0]                       @512      0x02

      ub1 kcvcpetb[1]                       @513      0x00

      ub1 kcvcpetb[2]                       @514      0x00

      ub1 kcvcpetb[3]                       @515      0x00

      ub1 kcvcpetb[4]                       @516      0x00

      ub1 kcvcpetb[5]                       @517      0x00

      ub1 kcvcpetb[6]                       @518      0x00

      ub1 kcvcpetb[7]                       @519      0x00

      ub1 kcvcpetb[8]                       @520      0x00

      ub1 kcvcpetb[9]                       @521      0x00

      ub1 kcvcpetb[10]                      @522      0x00

      ub1 kcvcpetb[11]                      @523      0x00

      ub1 kcvcpetb[12]                      @524      0x00

      ub1 kcvcpetb[13]                      @525      0x00

      ub1 kcvcpetb[14]                      @526      0x00

      ub1 kcvcpetb[15]                      @527      0x00

      ub1 kcvcpetb[16]                      @528      0x00

      ub1 kcvcpetb[17]                      @529      0x00

      ub1 kcvcpetb[18]                      @530      0x00

      ub1 kcvcpetb[19]                      @531      0x00

      ub1 kcvcpetb[20]                      @532      0x00

      ub1 kcvcpetb[21]                      @533      0x00

      ub1 kcvcpetb[22]                      @534      0x00

      ub1 kcvcpetb[23]                      @535      0x00

      ub1 kcvcpetb[24]                      @536      0x00

      ub1 kcvcpetb[25]                      @537      0x00

      ub1 kcvcpetb[26]                      @538      0x00

      ub1 kcvcpetb[27]                      @539      0x00

      ub1 kcvcpetb[28]                      @540      0x00

      ub1 kcvcpetb[29]                      @541      0x00

      ub1 kcvcpetb[30]                      @542      0x00

      ub1 kcvcpetb[31]                      @543      0x00

      ub1 kcvcpetb[32]                      @544      0x00

      ub1 kcvcpetb[33]                      @545      0x00

      ub1 kcvcpetb[34]                      @546      0x00

      ub1 kcvcpetb[35]                      @547      0x00

      ub1 kcvcpetb[36]                      @548      0x00

      ub1 kcvcpetb[37]                      @549      0x00

      ub1 kcvcpetb[38]                      @550      0x00

      ub1 kcvcpetb[39]                      @551      0x00

      ub1 kcvcpetb[40]                      @552      0x00

      ub1 kcvcpetb[41]                      @553      0x00

      ub1 kcvcpetb[42]                      @554      0x00

      ub1 kcvcpetb[43]                      @555      0x00

      ub1 kcvcpetb[44]                      @556      0x00

      ub1 kcvcpetb[45]                      @557      0x00

      ub1 kcvcpetb[46]                      @558      0x00

      ub1 kcvcpetb[47]                      @559      0x00

      ub1 kcvcpetb[48]                      @560      0x00

      ub1 kcvcpetb[49]                      @561      0x00

      ub1 kcvcpetb[50]                      @562      0x00

      ub1 kcvcpetb[51]                      @563      0x00

      ub1 kcvcpetb[52]                      @564      0x00

      ub1 kcvcpetb[53]                      @565      0x00

      ub1 kcvcpetb[54]                      @566      0x00

      ub1 kcvcpetb[55]                      @567      0x00

      ub1 kcvcpetb[56]                      @568      0x00

      ub1 kcvcpetb[57]                      @569      0x00

      ub1 kcvcpetb[58]                      @570      0x00

      ub1 kcvcpetb[59]                      @571      0x00

      ub1 kcvcpetb[60]                      @572      0x00

      ub1 kcvcpetb[61]                      @573      0x00

      ub1 kcvcpetb[62]                      @574      0x00

      ub1 kcvcpetb[63]                      @575      0x00

      ub1 kcvcpetb[64]                      @576      0x00

      ub1 kcvcpetb[65]                      @577      0x00

      ub1 kcvcpetb[66]                      @578      0x00

      ub1 kcvcpetb[67]                      @579      0x00

      ub1 kcvcpetb[68]                      @580      0x00

      ub1 kcvcpetb[69]                      @581      0x00

      ub1 kcvcpetb[70]                      @582      0x00

      ub1 kcvcpetb[71]                      @583      0x00

      ub1 kcvcpetb[72]                      @584      0x00

      ub1 kcvcpetb[73]                      @585      0x00

      ub1 kcvcpetb[74]                      @586      0x00

      ub1 kcvcpetb[75]                      @587      0x00

      ub1 kcvcpetb[76]                      @588      0x00

      ub1 kcvcpetb[77]                      @589      0x00

      ub1 kcvcpetb[78]                      @590      0x00

      ub1 kcvcpetb[79]                      @591      0x00

      ub1 kcvcpetb[80]                      @592      0x00

      ub1 kcvcpetb[81]                      @593      0x00

      ub1 kcvcpetb[82]                      @594      0x00

      ub1 kcvcpetb[83]                      @595      0x00

      ub1 kcvcpetb[84]                      @596      0x00

      ub1 kcvcpetb[85]                      @597      0x00

      ub1 kcvcpetb[86]                      @598      0x00

      ub1 kcvcpetb[87]                      @599      0x00

      ub1 kcvcpetb[88]                      @600      0x00

      ub1 kcvcpetb[89]                      @601      0x00

      ub1 kcvcpetb[90]                      @602      0x00

      ub1 kcvcpetb[91]                      @603      0x00

      ub1 kcvcpetb[92]                      @604      0x00

      ub1 kcvcpetb[93]                      @605      0x00

      ub1 kcvcpetb[94]                      @606      0x00

      ub1 kcvcpetb[95]                      @607      0x00

      ub1 kcvcpetb[96]                      @608      0x00

      ub1 kcvcpetb[97]                      @609      0x00

      ub1 kcvcpetb[98]                      @610      0x00

      ub1 kcvcpetb[99]                      @611      0x00

      ub1 kcvcpetb[100]                     @612      0x00

      ub1 kcvcpetb[101]                     @613      0x00

      ub1 kcvcpetb[102]                     @614      0x00

      ub1 kcvcpetb[103]                     @615      0x00

      ub1 kcvcpetb[104]                     @616      0x00

      ub1 kcvcpetb[105]                     @617      0x00

      ub1 kcvcpetb[106]                     @618      0x00

      ub1 kcvcpetb[107]                     @619      0x00

      ub1 kcvcpetb[108]                     @620      0x00

      ub1 kcvcpetb[109]                     @621      0x00

      ub1 kcvcpetb[110]                     @622      0x00

      ub1 kcvcpetb[111]                     @623      0x00

      ub1 kcvcpetb[112]                     @624      0x00

      ub1 kcvcpetb[113]                     @625      0x00

      ub1 kcvcpetb[114]                     @626      0x00

      ub1 kcvcpetb[115]                     @627      0x00

      ub1 kcvcpetb[116]                     @628      0x00

      ub1 kcvcpetb[117]                     @629      0x00

      ub1 kcvcpetb[118]                     @630      0x00

      ub1 kcvcpetb[119]                     @631      0x00

      ub1 kcvcpetb[120]                     @632      0x00

      ub1 kcvcpetb[121]                     @633      0x00

      ub1 kcvcpetb[122]                     @634      0x00

      ub1 kcvcpetb[123]                     @635      0x00

      ub1 kcvcpetb[124]                     @636      0x00

      ub1 kcvcpetb[125]                     @637      0x00

      ub1 kcvcpetb[126]                     @638      0x00

      ub1 kcvcpetb[127]                     @639      0x00

      ub1 kcvcpetb[128]                     @640      0x00

   ub4 kcvfhcpc                             @140      0x000000a6

   ub4 kcvfhrts                             @144      0x3630b88e

   ub4 kcvfhccc                             @148      0x000000a5

   struct kcvfhbcp, 160 bytes               @152    

      struct kcvcpscn, 8 bytes              @152    

         ub4 kscnbas                        @152      0x00000000

         ub2 kscnwrp                        @156      0x0000

      ub4 kcvcptim                          @160      0x00000000

      ub2 kcvcpthr                          @164      0x0000

      union u, 12 bytes                     @168    

         struct kcvcprba, 12 bytes          @168    

            ub4 kcrbaseq                    @168      0x00000000

            ub4 kcrbabno                    @172      0x00000000

            ub2 kcrbabof                    @176      0x0000

      ub1 kcvcpetb[0]                       @180      0x00

      ub1 kcvcpetb[1]                       @181      0x00

      ub1 kcvcpetb[2]                       @182      0x00

      ub1 kcvcpetb[3]                       @183      0x00

      ub1 kcvcpetb[4]                       @184      0x00

      ub1 kcvcpetb[5]                       @185      0x00

      ub1 kcvcpetb[6]                       @186      0x00

      ub1 kcvcpetb[7]                       @187      0x00

      ub1 kcvcpetb[8]                       @188      0x00

      ub1 kcvcpetb[9]                       @189      0x00

      ub1 kcvcpetb[10]                      @190      0x00

      ub1 kcvcpetb[11]                      @191      0x00

      ub1 kcvcpetb[12]                      @192      0x00

      ub1 kcvcpetb[13]                      @193      0x00

      ub1 kcvcpetb[14]                      @194      0x00

      ub1 kcvcpetb[15]                      @195      0x00

      ub1 kcvcpetb[16]                      @196      0x00

      ub1 kcvcpetb[17]                      @197      0x00

      ub1 kcvcpetb[18]                      @198      0x00

      ub1 kcvcpetb[19]                      @199      0x00

      ub1 kcvcpetb[20]                      @200      0x00

      ub1 kcvcpetb[21]                      @201      0x00

      ub1 kcvcpetb[22]                      @202      0x00

      ub1 kcvcpetb[23]                      @203      0x00

      ub1 kcvcpetb[24]                      @204      0x00

      ub1 kcvcpetb[25]                      @205      0x00

      ub1 kcvcpetb[26]                      @206      0x00

      ub1 kcvcpetb[27]                      @207      0x00

      ub1 kcvcpetb[28]                      @208      0x00

      ub1 kcvcpetb[29]                      @209      0x00

      ub1 kcvcpetb[30]                      @210      0x00

      ub1 kcvcpetb[31]                      @211      0x00

      ub1 kcvcpetb[32]                      @212      0x00

      ub1 kcvcpetb[33]                      @213      0x00

      ub1 kcvcpetb[34]                      @214      0x00

      ub1 kcvcpetb[35]                      @215      0x00

      ub1 kcvcpetb[36]                      @216      0x00

      ub1 kcvcpetb[37]                      @217      0x00

      ub1 kcvcpetb[38]                      @218      0x00

      ub1 kcvcpetb[39]                      @219      0x00

      ub1 kcvcpetb[40]                      @220      0x00

      ub1 kcvcpetb[41]                      @221      0x00

      ub1 kcvcpetb[42]                      @222      0x00

      ub1 kcvcpetb[43]                      @223      0x00

      ub1 kcvcpetb[44]                      @224      0x00

      ub1 kcvcpetb[45]                      @225      0x00

      ub1 kcvcpetb[46]                      @226      0x00

      ub1 kcvcpetb[47]                      @227      0x00

      ub1 kcvcpetb[48]                      @228      0x00

      ub1 kcvcpetb[49]                      @229      0x00

      ub1 kcvcpetb[50]                      @230      0x00

      ub1 kcvcpetb[51]                      @231      0x00

      ub1 kcvcpetb[52]                      @232      0x00

      ub1 kcvcpetb[53]                      @233      0x00

      ub1 kcvcpetb[54]                      @234      0x00

      ub1 kcvcpetb[55]                      @235      0x00

      ub1 kcvcpetb[56]                      @236      0x00

      ub1 kcvcpetb[57]                      @237      0x00

      ub1 kcvcpetb[58]                      @238      0x00

      ub1 kcvcpetb[59]                      @239      0x00

      ub1 kcvcpetb[60]                      @240      0x00

      ub1 kcvcpetb[61]                      @241      0x00

      ub1 kcvcpetb[62]                      @242      0x00

      ub1 kcvcpetb[63]                      @243      0x00

      ub1 kcvcpetb[64]                      @244      0x00

      ub1 kcvcpetb[65]                      @245      0x00

      ub1 kcvcpetb[66]                      @246      0x00

      ub1 kcvcpetb[67]                      @247      0x00

      ub1 kcvcpetb[68]                      @248      0x00

      ub1 kcvcpetb[69]                      @249      0x00

      ub1 kcvcpetb[70]                      @250      0x00

      ub1 kcvcpetb[71]                      @251      0x00

      ub1 kcvcpetb[72]                      @252      0x00

      ub1 kcvcpetb[73]                      @253      0x00

      ub1 kcvcpetb[74]                      @254      0x00

      ub1 kcvcpetb[75]                      @255      0x00

      ub1 kcvcpetb[76]                      @256      0x00

      ub1 kcvcpetb[77]                      @257      0x00

      ub1 kcvcpetb[78]                      @258      0x00

      ub1 kcvcpetb[79]                      @259      0x00

      ub1 kcvcpetb[80]                      @260      0x00

      ub1 kcvcpetb[81]                      @261      0x00

      ub1 kcvcpetb[82]                      @262      0x00

      ub1 kcvcpetb[83]                      @263      0x00

      ub1 kcvcpetb[84]                      @264      0x00

      ub1 kcvcpetb[85]                      @265      0x00

      ub1 kcvcpetb[86]                      @266      0x00

      ub1 kcvcpetb[87]                      @267      0x00

      ub1 kcvcpetb[88]                      @268      0x00

      ub1 kcvcpetb[89]                      @269      0x00

      ub1 kcvcpetb[90]                      @270      0x00

      ub1 kcvcpetb[91]                      @271      0x00

      ub1 kcvcpetb[92]                      @272      0x00

      ub1 kcvcpetb[93]                      @273      0x00

      ub1 kcvcpetb[94]                      @274      0x00

      ub1 kcvcpetb[95]                      @275      0x00

      ub1 kcvcpetb[96]                      @276      0x00

      ub1 kcvcpetb[97]                      @277      0x00

      ub1 kcvcpetb[98]                      @278      0x00

      ub1 kcvcpetb[99]                      @279      0x00

      ub1 kcvcpetb[100]                     @280      0x00

      ub1 kcvcpetb[101]                     @281      0x00

      ub1 kcvcpetb[102]                     @282      0x00

      ub1 kcvcpetb[103]                     @283      0x00

      ub1 kcvcpetb[104]                     @284      0x00

      ub1 kcvcpetb[105]                     @285      0x00

      ub1 kcvcpetb[106]                     @286      0x00

      ub1 kcvcpetb[107]                     @287      0x00

      ub1 kcvcpetb[108]                     @288      0x00

      ub1 kcvcpetb[109]                     @289      0x00

      ub1 kcvcpetb[110]                     @290      0x00

      ub1 kcvcpetb[111]                     @291      0x00

      ub1 kcvcpetb[112]                     @292      0x00

      ub1 kcvcpetb[113]                     @293      0x00

      ub1 kcvcpetb[114]                     @294      0x00

      ub1 kcvcpetb[115]                     @295      0x00

      ub1 kcvcpetb[116]                     @296      0x00

      ub1 kcvcpetb[117]                     @297      0x00

      ub1 kcvcpetb[118]                     @298      0x00

      ub1 kcvcpetb[119]                     @299      0x00

      ub1 kcvcpetb[120]                     @300      0x00

      ub1 kcvcpetb[121]                     @301      0x00

      ub1 kcvcpetb[122]                     @302      0x00

      ub1 kcvcpetb[123]                     @303      0x00

      ub1 kcvcpetb[124]                     @304      0x00

      ub1 kcvcpetb[125]                     @305      0x00

      ub1 kcvcpetb[126]                     @306      0x00

      ub1 kcvcpetb[127]                     @307      0x00

      ub1 kcvcpetb[128]                     @308      0x00

   ub4 kcvfhbhz                             @312      0x00000000

   struct kcvfhxcd, 16 bytes                @316    

      ub4 space_kcvmxcd[0]                  @316      0x00000000

      ub4 space_kcvmxcd[1]                  @320      0x00000000

      ub4 space_kcvmxcd[2]                  @324      0x00000000

      ub4 space_kcvmxcd[3]                  @328      0x00000000

   sword kcvfhtsn                           @332      1

   ub2 kcvfhtln                             @336      0x0006

   text kcvfhtnm[0]                         @338     S

   text kcvfhtnm[1]                         @339     Y

   text kcvfhtnm[2]                         @340     S

   text kcvfhtnm[3]                         @341     A

   text kcvfhtnm[4]                         @342     U

   text kcvfhtnm[5]                         @343     X

   text kcvfhtnm[6]                         @344     

   text kcvfhtnm[7]                         @345     

   text kcvfhtnm[8]                         @346     

   text kcvfhtnm[9]                         @347     

   text kcvfhtnm[10]                        @348     

   text kcvfhtnm[11]                        @349     

   text kcvfhtnm[12]                        @350     

   text kcvfhtnm[13]                        @351     

   text kcvfhtnm[14]                        @352     

   text kcvfhtnm[15]                        @353     

   text kcvfhtnm[16]                        @354     

   text kcvfhtnm[17]                        @355     

   text kcvfhtnm[18]                        @356     

   text kcvfhtnm[19]                        @357     

   text kcvfhtnm[20]                        @358     

   text kcvfhtnm[21]                        @359     

   text kcvfhtnm[22]                        @360     

   text kcvfhtnm[23]                        @361     

   text kcvfhtnm[24]                        @362     

   text kcvfhtnm[25]                        @363     

   text kcvfhtnm[26]                        @364     

   text kcvfhtnm[27]                        @365     

   text kcvfhtnm[28]                        @366     

   text kcvfhtnm[29]                        @367     

   ub4 kcvfhrfn                             @368      0x00000002

   struct kcvfhrfs, 8 bytes                 @372    

      ub4 kscnbas                           @372      0x00000000

      ub2 kscnwrp                           @376      0x0000

   ub4 kcvfhrft                             @380      0x00000000

   struct kcvfhafs, 8 bytes                 @384    

      ub4 kscnbas                           @384      0x00000000

      ub2 kscnwrp                           @388      0x0000

   ub4 kcvfhbbc                             @392      0x00000000

   ub4 kcvfhncb                             @396      0x00000000

   ub4 kcvfhmcb                             @400      0x00000000

   ub4 kcvfhlcb                             @404      0x00000000

   ub4 kcvfhbcs                             @408      0x00000000

   ub2 kcvfhofb                             @412      0x0000

   ub2 kcvfhnfb                             @414      0x0000

   ub4 kcvfhprc                             @416      0x3155bebd

   struct kcvfhprs, 8 bytes                 @420    

      ub4 kscnbas                           @420      0x00000001

      ub2 kscnwrp                           @424      0x0000

   struct kcvfhprfs, 8 bytes                @428    

      ub4 kscnbas                           @428      0x00000000

      ub2 kscnwrp                           @432      0x0000

   ub4 kcvfhtrt                             @444      0x00000000

 

BBED>

 

 

 

二.3.3.1  修改文件头的信息

我们需要修改的地方有十个,分别是:

      ub4 rdba_kcbh                         @4        0x00800001

      ub4 kccfhfsz                          @44       0x00011300

      ub2 kccfhfno                          @52       0x0002

   ub4 kcvfhrdb                             @96       0x00000000

    struct kcvfhcrs, 8 bytes              @100    

       ub4 kscnbas                           @100      0x00000716

       ub2 kscnwrp                           @104      0x0000

    ub4 kcvfhcrt                             @108      0x3155becc

    ub2 kcvfhsta                             @138      0x0004 (KCVFHOFZ)

   sword kcvfhtsn                           @332      1

   text kcvfhtnm[3]                         @341     A

   text kcvfhtnm[4]                         @342     U

   text kcvfhtnm[5]                         @343     X

   ub4 kcvfhrfn                              @368      0x00000002

 

一、 ub4 rdba_kcbh 相对数据块地址

      ub4 rdba_kcbh                         @4        0x00800001

 

原信息:

BBED> set dba 1,1

        DBA             0x00400001 (4194305 1,1)

 

BBED> p kcvfhbfh

struct kcvfhbfh, 20 bytes                   @0      

   ub1 type_kcbh                            @0        0x0b

   ub1 frmt_kcbh                            @1        0xa2

   ub1 spare1_kcbh                          @2        0x00

   ub1 spare2_kcbh                          @3        0x00

   ub4 rdba_kcbh                            @4        0x00800001

   ub4 bas_kcbh                             @8        0x00000000

   ub2 wrp_kcbh                             @12       0x0000

   ub1 seq_kcbh                             @14       0x01

   ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)

   ub2 chkval_kcbh                          @16       0xed22

   ub2 spare3_kcbh                          @18       0x0000

 

BBED>

BBED> d count 128 offset 4

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:    4 to  131           Dba:0x00400001

------------------------------------------------------------------------

 00800001 00000000 00000104 ed220000 00000000 0b200400 1793c969 4f52414c

48520000 0000093b 00011300 00002000 00020003 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000716 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000 00000000

 

<32 bytes per line>

 

BBED>

 

该参数值代表当前数据块在数据库中的位置,转换为2进制后前10位代表文件号,后22位代表块号,转换表格如下:

 

原值

新值

存储16进制

0x00800001

0x00400001

可读16进制

0x00800001

0x00400001

2进制

0123456789 0123456789012345678901

---------------------------------

0000000010 0000000000000000000001

0123456789 0123456789012345678901

---------------------------------

0000000001 0000000000000000000001

表示意义

FILE 2 BLOCK 1

FILE 1 BLOCK 1

 

我们用计算器可以算得需要修改后的16进制,由于是AIX平台,存储和可读的顺序是一致的,这里很惭愧,第一次看到这的时候实在看不懂文件2是如何得到的,因为源资料不是这样写的,后来在公司老猫的帮助下,我才弄懂了这里的转换关系,所以我分享给大家,也感谢老猫的帮助。

 

转换:

 

BBED> set dba 1,1 offset 4

        DBA             0x00400001 (4194305 1,1)

        OFFSET          4

BBED> modify /x 00400001

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:    4 to  131           Dba:0x00400001

------------------------------------------------------------------------

 00400001 00000000 00000104 ed220000 00000000 0b200400 1793c969 4f52414c

48520000 0000093b 00011300 00002000 00020003 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000716 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000 00000000

 

<32 bytes per line>

 

BBED> p kcvfhbfh

struct kcvfhbfh, 20 bytes                   @0      

   ub1 type_kcbh                            @0        0x0b

   ub1 frmt_kcbh                            @1        0xa2

   ub1 spare1_kcbh                          @2        0x00

   ub1 spare2_kcbh                          @3        0x00

   ub4 rdba_kcbh                            @4        0x00400001

   ub4 bas_kcbh                             @8        0x00000000

   ub2 wrp_kcbh                             @12       0x0000

   ub1 seq_kcbh                             @14       0x01

   ub1 flg_kcbh                             @15       0x04 (KCBHFCKV)

   ub2 chkval_kcbh                          @16       0xed22

   ub2 spare3_kcbh                          @18       0x0000

 

BBED>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xede2, required = 0xede2

 

 

 

二、 文件大小和文件号

BBED> p kcvfhhdr

struct kcvfhhdr, 76 bytes                   @20     

   ub4 kccfhswv                             @20       0x00000000

   ub4 kccfhcvn                             @24       0x0b200400

   ub4 kccfhdbi                             @28       0x1793c969

   text kccfhdbn[0]                         @32      O

   text kccfhdbn[1]                         @33      R

   text kccfhdbn[2]                         @34      A

   text kccfhdbn[3]                         @35      L

   text kccfhdbn[4]                         @36      H

   text kccfhdbn[5]                         @37      R

   text kccfhdbn[6]                         @38      

   text kccfhdbn[7]                         @39      

   ub4 kccfhcsq                             @40       0x0000093b

   ub4 kccfhfsz                             @44       0x00011300

   s_blkz kccfhbsz                          @48       0x00

   ub2 kccfhfno                             @52       0x0002

   ub2 kccfhtyp                             @54       0x0003

   ub4 kccfhacid                            @56       0x00000000

   ub4 kccfhcks                             @60       0x00000000

   text kccfhtag[0]                         @64      

   text kccfhtag[1]                         @65      

   text kccfhtag[2]                         @66      

   text kccfhtag[3]                         @67      

   text kccfhtag[4]                         @68      

   text kccfhtag[5]                         @69      

   text kccfhtag[6]                         @70      

   text kccfhtag[7]                         @71      

   text kccfhtag[8]                         @72      

   text kccfhtag[9]                         @73      

   text kccfhtag[10]                        @74      

   text kccfhtag[11]                        @75      

   text kccfhtag[12]                        @76      

   text kccfhtag[13]                        @77      

   text kccfhtag[14]                        @78      

   text kccfhtag[15]                        @79      

   text kccfhtag[16]                        @80      

   text kccfhtag[17]                        @81      

   text kccfhtag[18]                        @82      

   text kccfhtag[19]                        @83      

   text kccfhtag[20]                        @84      

   text kccfhtag[21]                        @85      

   text kccfhtag[22]                        @86      

   text kccfhtag[23]                        @87      

   text kccfhtag[24]                        @88      

   text kccfhtag[25]                        @89      

   text kccfhtag[26]                        @90      

   text kccfhtag[27]                        @91      

   text kccfhtag[28]                        @92      

   text kccfhtag[29]                        @93      

   text kccfhtag[30]                        @94      

   text kccfhtag[31]                        @95      

 

BBED>

 

1、 ub4 kccfhfsz 文件大小

ub4 kccfhfsz                          @44       0x00011300

 

具体转换过程参考如下表格:

 

原值

新值

存储16进制

0x00011300

0x00017700

可读16进制

0x00011300

0x00017700

可读10进制(blocks)

70400

96000

DB FILE SIZE

576716800

786432000

OS FILE SIZE

576724992

786440192

算法

十六进制11300转换10进制为70400,代表块数,70400*8192=576716800byte ,加上一个数据块代表OS文件的大小:576716800+8192=576724992

 

从OS获取文件大小,从而反推DB基本的文件大小,OS文件大小786440192,786440192-8192=786432000为DB基本文件大小,786432000/8192=96000为数据库的blocks数,转换16进制为0x00017700

文件大小

[ZHLHRDB2:oracle]:/oracle>cd /oracle/app/oracle/datafile/oralhr   

[ZHLHRDB2:oracle]:/oracle/app/oracle/datafile/oralhr>l sys*

-rw-r-----    1 oracle   asmadmin  576724992 Apr 15 08:45 sysaux01.dbf

-rw-r-----    1 oracle   asmadmin  786440192 Apr 15 09:31 system01.dbf

-rw-r-----    1 oracle   dba       786440192 Apr 14 10:02 system01.dbf_bk


 

修改:

 

[ZHLHRDB2:oracle]:/oracle>cd /oracle/app/oracle/datafile/oralhr   

[ZHLHRDB2:oracle]:/oracle/app/oracle/datafile/oralhr>l sys*

-rw-r-----    1 oracle   asmadmin  576724992 Apr 15 08:45 sysaux01.dbf

-rw-r-----    1 oracle   asmadmin  786440192 Apr 15 09:31 system01.dbf

-rw-r-----    1 oracle   dba       786440192 Apr 14 10:02 system01.dbf_bk

 

BBED> set dba 1,1 offset 44 count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          44

        COUNT           64

 

BBED> d

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   44 to  107           Dba:0x00400001

------------------------------------------------------------------------

00011300 00002000 00020003 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000716 00000000

 

<32 bytes per line>

 

BBED> m /x 00017700

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   44 to  107           Dba:0x00400001

------------------------------------------------------------------------

00017700 00002000 00020003 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000716 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0x89e2, required = 0x89e2

 

BBED> d

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   44 to  107           Dba:0x00400001

------------------------------------------------------------------------

00017700 00002000 00020003 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000716 00000000

 

<32 bytes per line>

 

BBED>

 

 

2、 ub2 kccfhfno 文件号

 

ub2 kccfhfno                          @52       0x0002

 

比较简单,原sysaux为2号文件,我们需要修改为1号文件:

BBED> set dba 1,1 offset 52 count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          52

        COUNT           64

 

BBED> d

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   52 to  115           Dba:0x00400001

------------------------------------------------------------------------

00020003 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000716 00000000 3155becc 362e0deb

 

<32 bytes per line>

 

BBED> m /x 00010003

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   52 to  115           Dba:0x00400001

------------------------------------------------------------------------

00010003 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000716 00000000 3155becc 362e0deb

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0x89e1, required = 0x89e1

 

BBED>

 

三、 ub4 kcvfhrdb  bootstrap$ 对象的地址

   ub4 kcvfhrdb                             @96       0x00000000

 

该部分信息为sys.bootstrap$ 对象的地址,在10g中固定DBA为1,377, 但在11g中dba为1,520,这里看到为0,说明2号文件上不存在该对象, 其转换形式和rdba_kcbh部分是一样的,不再赘述。

 

 

 

11g中存储在1号文件520块:

BBED> info

File#  Name                                                        Size(blks)

-----  ----                                                        ----------

     1  /oracle/app/oracle/datafile/oralhr/system01.dbf                  96000

     2  /oracle/app/oracle/datafile/oralhr/sysaux01.dbf                  69120

     3  /oracle/app/oracle/datafile/oralhr/undotbs01.dbf                  9600

     4  /oracle/app/oracle/datafile/oralhr/users01.dbf                   37920

     5  /oracle/app/oracle/datafile/oralhr/system01.dbf_bk               96000

 

BBED>

BBED>

BBED> set dba 5,1 offset 96 count 64

        DBA             0x01400001 (20971521 5,1)

        OFFSET          96

        COUNT           64

 

BBED> print kcvfhrdb

ub4 kcvfhrdb                                @96       0x00400208

====》 0000000001 0000000000001000001000, 1号文件520块,下边我们进行修改:

 

 

BBED> set dba 1,1 offset 96 count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          96

        COUNT           64

 

BBED> d

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   96 to  159           Dba:0x00400001

------------------------------------------------------------------------

00000000 00000716 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000

00000000 00000000 00000004 000000a6 3630b88e 000000a5 00000000 00000000

 

<32 bytes per line>

 

BBED> modify /x 00400208

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:   96 to  159           Dba:0x00400001

------------------------------------------------------------------------

00400208 00000716 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000

00000000 00000000 00000004 000000a6 3630b88e 000000a5 00000000 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0x8ba9, required = 0x8ba9

 

BBED>

 

四、 ub4 kscnbas 文件创建SCN号

    struct kcvfhcrs, 8 bytes                    @100    

      ub4 kscnbas                           @100      0x00000716

      ub2 kscnwrp                           @104      0x0000

 

 

SYS@oralhr> set line 9999

SYS@oralhr> col name format a60

SYS@oralhr> SELECT d.FILE#,d.CREATION_CHANGE#,to_char(d.CREATION_CHANGE#,'xxxxxxxxxxxx') scn_hx,d.NAME FROM v$datafile d ;

 

     FILE# CREATION_CHANGE# SCN_HX                     NAME

---------- ---------------- -------------------------- ------------------------------------------------------------

         1                8             8              /oracle/app/oracle/datafile/oralhr/system01.dbf

         2             1814           716              /oracle/app/oracle/datafile/oralhr/sysaux01.dbf

         3           923586         e17c2              /oracle/app/oracle/datafile/oralhr/undotbs01.dbf

         4            16050          3eb2              /oracle/app/oracle/datafile/oralhr/users01.dbf

 

SYS@oralhr>

 

====》 2号文件的scn为1814转换为16进制后就是716,和bbed查询出来的一致,下边修改1号文件的scn

 

 

BBED> p kcvfhcrs

struct kcvfhcrs, 8 bytes                    @100    

   ub4 kscnbas                              @100      0x00000716

   ub2 kscnwrp                              @104      0x0000

 

BBED> set dba 1,1 offset 100 count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          100

        COUNT           64

 

BBED> m /x 00000008

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  100 to  163           Dba:0x00400001

------------------------------------------------------------------------

00000008 00000000 3155becc 362e0deb 000e20dc 00007f18 00000000 00000000

00000000 00000004 000000a6 3630b88e 000000a5 00000000 00000000 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0x8cb7, required = 0x8cb7

 

BBED> p kcvfhcrs

struct kcvfhcrs, 8 bytes                    @100    

   ub4 kscnbas                              @100      0x00000008

   ub2 kscnwrp                              @104      0x0000

 

BBED>

 

五、 ub4 kcvfhcrt 文件创建时间

 

BBED> p kcvfhcrt

ub4 kcvfhcrt                                @108      0x3155becc

 

BBED>

 

 

SYS@oralhr> set line 9999

SYS@oralhr> col name format a60

SYS@oralhr> col scn_hx format a15

SYS@oralhr> col time_hx format a15

SYS@oralhr> select file#,name,CREATION_CHANGE#,scn_hx,CREATION_TIME_N,to_char(CREATION_TIME_N,'xxxxxxxxxxxx') time_hx,CREATION_TIME_D from (

  2  SELECT d.FILE#,

  3         d.NAME,

  4         d.CREATION_CHANGE#,

  5         to_char(d.CREATION_CHANGE#,'xxxxxxxxxxxx') scn_hx,

  6         ((to_char(d.CREATION_TIME, 'YYYY') - 1988) * 12 * 31 * 24 * 3600 +

  7         (to_char(d.CREATION_TIME, 'MM') - 1) * 31 * 24 * 3600 +

  8         (to_char(d.CREATION_TIME, 'dd') - 1) * 24 * 3600 +

  9         (to_char(d.CREATION_TIME, 'hh24')) * 3600 +

10         (to_char(d.CREATION_TIME, 'mi')) * 60 +

11         to_char(d.CREATION_TIME, 'ss')) CREATION_TIME_N,

12         to_char(d.CREATION_TIME, 'YYYY-MM-DD HH24:MI:SS') CREATION_TIME_D

13    FROM v$datafile d);

 

     FILE# NAME                                                         CREATION_CHANGE# SCN_HX          CREATION_TIME_N TIME_HX         CREATION_TIME_D

---------- ------------------------------------------------------------ ---------------- --------------- --------------- --------------- ------------------------------

         1 /oracle/app/oracle/datafile/oralhr/system01.dbf                             8             8         827702981      3155bec5   2013-10-01 21:29:41

         2 /oracle/app/oracle/datafile/oralhr/sysaux01.dbf                          1814           716         827702988      3155becc   2013-10-01 21:29:48

         3 /oracle/app/oracle/datafile/oralhr/undotbs01.dbf                       923586         e17c2         827712502      3155e3f6   2013-10-02 00:08:22

         4 /oracle/app/oracle/datafile/oralhr/users01.dbf                          16050          3eb2         827703010      3155bee2   2013-10-01 21:30:10

 

SYS@oralhr>

 

BBED> p kcvfhcrt

ub4 kcvfhcrt                                @108      0x3155becc

 

BBED> set dba 1,1 offset 108

        DBA             0x00400001 (4194305 1,1)

        OFFSET          108

 

BBED>

BBED> m /x 3155BEC5

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  108 to  171           Dba:0x00400001

------------------------------------------------------------------------

3155bec5 362e0deb 000e20dc 00007f18 00000000 00000000 00000000 00000004

000000a6 3630b88e 000000a5 00000000 00000000 00000000 00000000 00000000

 

<32 bytes per line>

 

BBED>

BBED> sum apply

Check value for File 1, Block 1:

current = 0x8cbe, required = 0x8cbe

 

BBED>

 

 

六、 ub2 kcvfhsta 文件头部状态

ub2 kcvfhsta                                @138      0x0004 (KCVFHOFZ)

 

表示文件的状态,对于文件1,正常关闭的值为8192,16进制为2000

 

BBED> set dba 1,1 offset 138  count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          138

        COUNT           64

 

BBED> d

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  138 to  201           Dba:0x00400001

------------------------------------------------------------------------

00040000 00a63630 b88e0000 00a50000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

 

<32 bytes per line>

 

BBED> m /x 2000

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  138 to  201           Dba:0x00400001

------------------------------------------------------------------------

20000000 00a63630 b88e0000 00a50000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0xacba, required = 0xacba

 

BBED>

 

 

七、 kcvfhtsn  表空间号

   sword kcvfhtsn                           @332      1

system为0号表空间:

SYS@oralhr> select ts#,name from v$tablespace;

 

       TS# NAME

---------- ------------------------------------------------------------

         0 SYSTEM

         1 SYSAUX

         2 UNDOTBS1

         4 USERS

         3 TEMP

 

 

BBED> p kcvfhtsn

sword kcvfhtsn                              @332      1

 

BBED> set dba 1,1 offset 332  count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          332

        COUNT           64

 

BBED> m /x 00000000

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  332 to  395           Dba:0x00400001

------------------------------------------------------------------------

00000000 00065359 53415558 00000000 00000000 00000000 00000000 00000000

00000000 00000002 00000000 00000000 00000000 00000000 0000b7e0 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0xacbb, required = 0xacbb

 

BBED>  p kcvfhtsn

sword kcvfhtsn                              @332      0

 

BBED>

 

 

八、 p kcvfhtnm 表空间名

   text kcvfhtnm[3]                         @341     A

   text kcvfhtnm[4]                         @342     U

   text kcvfhtnm[5]                         @343     X

 

BBED> p kcvfhtnm

text kcvfhtnm[0]                            @338     S

text kcvfhtnm[1]                            @339     Y

text kcvfhtnm[2]                            @340     S

text kcvfhtnm[3]                            @341     A

text kcvfhtnm[4]                            @342     U

text kcvfhtnm[5]                            @343     X

text kcvfhtnm[6]                            @344     

text kcvfhtnm[7]                            @345     

text kcvfhtnm[8]                            @346     

text kcvfhtnm[9]                            @347     

text kcvfhtnm[10]                           @348     

text kcvfhtnm[11]                           @349     

text kcvfhtnm[12]                           @350     

text kcvfhtnm[13]                           @351     

text kcvfhtnm[14]                           @352     

text kcvfhtnm[15]                           @353     

text kcvfhtnm[16]                           @354     

text kcvfhtnm[17]                           @355     

text kcvfhtnm[18]                           @356     

text kcvfhtnm[19]                           @357     

text kcvfhtnm[20]                           @358     

text kcvfhtnm[21]                           @359     

text kcvfhtnm[22]                           @360     

text kcvfhtnm[23]                           @361     

text kcvfhtnm[24]                           @362     

text kcvfhtnm[25]                           @363     

text kcvfhtnm[26]                           @364     

text kcvfhtnm[27]                           @365     

text kcvfhtnm[28]                           @366     

text kcvfhtnm[29]                           @367     

 

BBED>

 

我们需要修改为SYSTEM,可以查询ASCII码表,或者从其它库中获取,注意这个值不存在大小端的转换:

BBED> set dba 1,1 offset 338  count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          338

        COUNT           64

 

BBED> d /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1       Offsets:  338 to  401  Dba:0x00400001

-------------------------------------------------------

53595341 55580000 00000000 00000000 l SYSAUX..........

00000000 00000000 00000000 00000000 l ................

00020000 00000000 00000000 00000000 l ................

00000000 b7e00000 00000000 00000000 l ................

 

<16 bytes per line>

 

BBED> set dba 5,1 offset 338  count 64

        DBA             0x01400001 (20971521 5,1)

        OFFSET          338

        COUNT           64

 

BBED> d /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf_bk (5)

Block: 1       Offsets:  338 to  401  Dba:0x01400001

-------------------------------------------------------

53595354 454d0000 00000000 00000000 l SYSTEM..........

00000000 00000000 00000000 00000000 l ................

00010000 00000000 00000000 00000000 l ................

00000000 b7e00000 00000000 00000000 l ................

 

BBED> set dba 5,1 offset 341  count 64

        DBA             0x01400001 (20971521 5,1)

        OFFSET          341

        COUNT           64

 

BBED> d /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf_bk (5)

Block: 1       Offsets:  341 to  404  Dba:0x01400001

-------------------------------------------------------

54454d00 00000000 00000000 00000000 l TEM.............

00000000 00000000 00000000 00000100 l ................

00000000 00000000 00000000 00000000 l ................

00b7e000 00000000 00000000 00000000 l ................

 

<16 bytes per line>

 

BBED> set dba 1,1 offset 341  count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          341

        COUNT           64

 

BBED> d /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1       Offsets:  341 to  404  Dba:0x00400001

-------------------------------------------------------

41555800 00000000 00000000 00000000 l AUX.............

00000000 00000000 00000000 00000200 l ................

00000000 00000000 00000000 00000000 l ................

00b7e000 00000000 00000000 00000000 l ................

 

<16 bytes per line>

 

BBED> m /x 54454d00

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  341 to  404           Dba:0x00400001

------------------------------------------------------------------------

54454d00 00000000 00000000 00000000 00000000 00000000 00000000 00000200

00000000 00000000 00000000 00000000 00b7e000 00000000 00000000 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0xbcbb, required = 0xbcbb

 

BBED> set dba 1,1 offset 338  count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          338

        COUNT           64

 

BBED> d /v

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1       Offsets:  338 to  401  Dba:0x00400001

-------------------------------------------------------

 53595354 454d0000 00000000 00000000 l SYSTEM..........

00000000 00000000 00000000 00000000 l ................

00020000 00000000 00000000 00000000 l ................

00000000 b7e00000 00000000 00000000 l ................

 

<16 bytes per line>

 

BBED>

 

九、 ub4 kcvfhrfn 相对文件号

ub4 kcvfhrfn                             @368      0x00000002

代表相对文件号,需要修改为1号:

BBED>  p kcvfhrfn

ub4 kcvfhrfn                                @368      0x00000002

 

BBED> set dba 1,1 offset 368   count 64

        DBA             0x00400001 (4194305 1,1)

        OFFSET          368

        COUNT           64

 

BBED> m /x 00000001

File: /oracle/app/oracle/datafile/oralhr/system01.dbf (1)

Block: 1                Offsets:  368 to  431           Dba:0x00400001

------------------------------------------------------------------------

00000001 00000000 00000000 00000000 00000000 0000b7e0 00000000 00000000

00000000 00000000 00000000 00000000 3155bebd 00000001 00000000 00000000

 

<32 bytes per line>

 

BBED> sum apply

Check value for File 1, Block 1:

current = 0xbcb8, required = 0xbcb8

 

BBED> p kcvfhrfn

ub4 kcvfhrfn                                @368      0x00000001

 

BBED>

 

 

二.3.3.2  尝试open数据库

在以上所有修改完毕后就可以尝试启动数据库了:

 

SYS@oralhr> select open_mode from v$database;

 

OPEN_MODE

----------------------------------------

MOUNTED

 

SYS@oralhr> alter database open;

alter database open

*

ERROR at line 1:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '/oracle/app/oracle/datafile/oralhr/system01.dbf'

 

SYS@oralhr> recover datafile 1;

Media recovery complete.

SYS@oralhr> alter database open;

 

Database altered.

 

SYS@oralhr>

 

由于没有修改文件头与检查点有关的内容,故需要做recover操作,由于归档日志都在,所以直接recover datafile 1恢复即可。

open的过程中的告警日志:

Fri Apr 15 10:51:33 2016

alter database open

Errors in file /oracle/app/oracle/diag/rdbms/oralhr/oralhr/trace/oralhr_ora_7602280.trc:

ORA-01113: file 1 needs media recovery

ORA-01110: data file 1: '/oracle/app/oracle/datafile/oralhr/system01.dbf'

ORA-1113 signalled during: alter database open...

Fri Apr 15 10:51:33 2016

Checker run found 1 new persistent data failures

Fri Apr 15 10:54:28 2016

ALTER DATABASE RECOVER  datafile 1 

Media Recovery Start

Serial Media Recovery started

Recovery of Online Redo Log: Thread 1 Group 3 Seq 45 Reading mem 0

  Mem# 0: /oracle/app/oracle/datafile/oralhr/redo03.log

Media Recovery Complete (oralhr)

Completed: ALTER DATABASE RECOVER  datafile 1 

Fri Apr 15 10:54:40 2016

alter database open

Beginning crash recovery of 1 threads

parallel recovery started with 7 processes

Started redo scan

Completed redo scan

read 16 KB redo, 15 data blocks need recovery

Started redo application at

Thread 1: logseq 45, block 14177

Recovery of Online Redo Log: Thread 1 Group 3 Seq 45 Reading mem 0

  Mem# 0: /oracle/app/oracle/datafile/oralhr/redo03.log

Completed redo application of 0.01MB

Completed crash recovery at

Thread 1: logseq 45, block 14209, scn 1332897

15 data blocks read, 15 data blocks written, 16 redo k-bytes read

Fri Apr 15 10:54:41 2016

LGWR: STARTING ARCH PROCESSES

Fri Apr 15 10:54:41 2016

ARC0 started with pid=33, OS id=23003154

ARC0: Archival started

LGWR: STARTING ARCH PROCESSES COMPLETE

Thread 1 advanced to log sequence 46 (thread open)

ARC0: STARTING ARCH PROCESSES

Thread 1 opened at log sequence 46

  Current log# 1 seq# 46 mem# 0: /oracle/app/oracle/datafile/oralhr/redo01.log

Successful open of redo thread 1

MTTR advisory is disabled because FAST_START_MTTR_TARGET is not set

Fri Apr 15 10:54:41 2016

SMON: enabling cache recovery

Fri Apr 15 10:54:41 2016

ARC1 started with pid=34, OS id=39977044

Fri Apr 15 10:54:41 2016

ARC2 started with pid=35, OS id=24707290

Fri Apr 15 10:54:41 2016

ARC3 started with pid=36, OS id=34668790

ARC1: Archival started

ARC2: Archival started

ARC3: Archival started

ARC0: STARTING ARCH PROCESSES COMPLETE

ARC1: Becoming the 'no FAL' ARCH

ARC1: Becoming the 'no SRL' ARCH

ARC2: Becoming the heartbeat ARCH

[7602280] Successfully onlined Undo Tablespace 2.

Undo initialization finished serial:0 start:890311400 end:890311459 diff:59 (0 seconds)

Verifying file header compatibility for 11g tablespace encryption..

Verifying 11g file header compatibility for tablespace encryption completed

SMON: enabling tx recovery

Database Characterset is AL32UTF8

Archived Log entry 40 added for thread 1 sequence 45 ID 0x1793c569 dest 1:

No Resource Manager plan active

replication_dependency_tracking turned off (no async multimaster replication found)

Starting background process QMNC

Fri Apr 15 10:54:41 2016

QMNC started with pid=37, OS id=34537504

Completed: alter database open

Fri Apr 15 10:54:42 2016

Starting background process CJQ0

Fri Apr 15 10:54:42 2016

CJQ0 started with pid=40, OS id=21037310

Fri Apr 15 10:59:43 2016

Starting background process SMCO

Fri Apr 15 10:59:43 2016

SMCO started with pid=41, OS id=28967004

 

 

二.4  实验总结

其实重要的不在于恢复的过程,而在于对BBED工具的了解,通过BBED来了解文件头块的内容和格式,对于这个案例我们可以直接将备份的文件头copy到1号文件的文件头实现恢复。

 

 

上一篇:C语言进阶(二)--- 整型存放练习


下一篇:HashMap底层源码分析