system数据文件头恢复(ORA-01210: data file header is media corrupt)

目录

数据库OPEN读取数据文件头

损坏SYSTEM数据文件头

数据库无法正常关闭和启动

BBED操作文件头,显示无效类型

构造文件头结构

用2号文件1号块覆盖1号文件1号块

要修复列表

修复文件头block的rdba地址(offset 4)

修复文件头文件大小(offset 44)

修复文件头文件号(offset 52)

修复文件头root数据块号(offset 96)

修复文件创建SCN(offset 100)

修复文件创建时间(offset 108)

修复文件状态(offset 138)

修复文件头的表空间号(offset 332)

修复表空间长度(offset 336)

修复表空间名称(offset 338)

修复相对文件号(offset 368)

修复检查点SCN(offset 484)

修复检查点时间(offset 492)

dbv检查下文件头修改是否都正确

打开数据库


数据库OPEN读取数据文件头

SQL> startup mount

ORACLE instance started.

Total System Global Area 1486495744 bytes

Fixed Size                  2253384 bytes

Variable Size             436211128 bytes

Database Buffers         1040187392 bytes

Redo Buffers                7843840 bytes

Database mounted.

SQL> alter session set events '10046 trace name context forever,level 8';

Session altered.

SQL> alter database open;

Database altered.

SQL> alter session set events '10046 trace name context off';

Session altered.

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

VALUE

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

/u01/app/oracle/diag/rdbms/orcl/orcl/trace/orcl_ora_10511.trc

 

查看trace文件,打开数据库时读取数据文件头1号块(文件头0号块只存放操作系统信息,包括文件大小和数据块大小,比如8192)

WAIT #140058386675448: nam='db file sequential read' ela= 6 file#=1 block#=1 blocks=1 obj#=-1 tim=1602642408337050

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=2 block#=1 blocks=1 obj#=-1 tim=1602642408337074

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=3 block#=1 blocks=1 obj#=-1 tim=1602642408337089

WAIT #140058386675448: nam='db file sequential read' ela= 1 file#=4 block#=1 blocks=1 obj#=-1 tim=1602642408337095

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=5 block#=1 blocks=1 obj#=-1 tim=1602642408337102

WAIT #140058386675448: nam='db file sequential read' ela= 1 file#=6 block#=1 blocks=1 obj#=-1 tim=1602642408337108

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=7 block#=1 blocks=1 obj#=-1 tim=1602642408337117

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=8 block#=1 blocks=1 obj#=-1 tim=1602642408337123

WAIT #140058386675448: nam='db file sequential read' ela= 1 file#=9 block#=1 blocks=1 obj#=-1 tim=1602642408337128

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=10 block#=1 blocks=1 obj#=-1 tim=1602642408337135

WAIT #140058386675448: nam='db file sequential read' ela= 2 file#=11 block#=1 blocks=1 obj#=-1 tim=1602642408337141

WAIT #140058386675448: nam='db file sequential read' ela= 1 file#=12 block#=1 blocks=1 obj#=-1 tim=1602642408337147

损坏SYSTEM数据文件头

oracle@dblab ~]$ bbed parfile=par.txt

BBED: Release 2.0.0.0.0 - Limited Production on Wed Oct 14 10:38:00 2020

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

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

BBED> info

File#  Name                                                        Size(blks)

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

     1  /u01/app/oracle/oradata/orcl/system01.dbf                        96000

     2  /u01/app/oracle/oradata/orcl/sysaux01.dbf                        70400

     3  /u01/app/oracle/oradata/orcl/undotbs01.dbf                       11520

     4  /u01/app/oracle/oradata/orcl/users01.dbf                          4640

     5  /u01/app/oracle/oradata/orcl/users02.dbf                        195072

     6  /u01/app/oracle/oradata/orcl/infa_tbs01.dbf                      25600

     7  /u01/app/oracle/oradata/orcl/infa_tbs02.dbf                       1280

     8  /u01/app/oracle/oradata/orcl/infa_tbs03.dbf                        640

     9  /u01/app/oracle/oradata/orcl/infa_idx01.dbf                       1280

    10  /u01/app/oracle/oradata/orcl/ogg01.dbf                            2560

    11  /u01/app/oracle/oradata/orcl/system02.dbf                         6400

    12  /u01/app/oracle/oradata/orcl/undotbs02.dbf                       20480

BBED> copy file 4 block 10 to file 1 block 1;

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

1ea20000 0a000001 203f0000 00000104 a6010000 04000000 80403600 00000000

00000000 00f80000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

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 1, Block 1:

current = 0x01a6, required = 0x01a6

数据库无法正常关闭和启动

SQL> shutdown immediate

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

ORA-01210: data file header is media corrupt

 

SQL> startup force

ORACLE instance started.

Total System Global Area 1486495744 bytes

Fixed Size                  2253384 bytes

Variable Size             436211128 bytes

Database Buffers         1040187392 bytes

Redo Buffers                7843840 bytes

Database mounted.

ORA-01122: database file 1 failed verification check

ORA-01110: data file 1: '/u01/app/oracle/oradata/orcl/system01.dbf'

ORA-01210: data file header is media corrupt

BBED操作文件头,显示无效块结构

BBED> set file 1 block 1;

        FILE#           1

        BLOCK#          1

BBED> map /v

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

Block: 1                                     Dba:0x00400001

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

BBED-00400: invalid blocktype (30)

构造文件头结构

用2号文件1号块覆盖1号文件1号块

BBED> set file 2 block 1

        FILE#           2

        BLOCK#          1

BBED> map /v

File: /u01/app/oracle/oradata/orcl/sysaux01.dbf (2)

Block: 1                                     Dba:0x00800001

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

Data File Header

struct kcvfh, 860 bytes                    @0      

    struct kcvfhbfh, 20 bytes               @0      

    struct kcvfhhdr, 76 bytes               @20

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

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

0ba20000 01008000 00000000 00000104 79bf0000 00000000 0004200b 0752605b

4f52434c 00000000 39110000 00130100 00200000 02000300 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 2a070000 00000000 81c92131 8906eb3b 06200e00 00000000 00000000

00000000 00000000 00000400 28010000 78b7b63d 27010000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 01000000 06005359 53415558 00000000 00000000

00000000 00000000 00000000 00000000 02000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

7ac92131 01000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

00000000 4ea34100 00000000 e848cf3e 01000000 86000000 61330000 10000000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xbf79, required = 0xbf79

要修复列表

1. rdba_kcbh(offset 4) 文件头block的rdba地址

2. kccfhfsz (offset 44) 文件大小

3. kccfhfno (offset 52) datafile文件号

4. kcvfhrdb (offset 96) root dba

5. kscnbas (offset 100) v$datafile.creation_change#

6. kcvfhcrt (offset 108) v$datafile.creation_time

7. kcvfhsta (offset 138) 文件状态

8. kcvfhtsn (offset 332) 表空间号v$datafile.ts#

9.kcvfhtln (offset 336) 表空间名称字符长度

10. kcvfhtnm (offset 338) 表空间名称v$tablespace.name

11. kcvfhrfn (offset 368) 相对文件号v$datafile.rfile#

12. kscnbas (offset 484) checkpoint scn

13.kcvcptim (offset 492) last checkpoint time

14.kcvfhcpc (offset 144) Datafile checkpoint count

修复文件头block的rdba地址(offset 4)

BBED> set file 1 block 1;

        FILE#           1

        BLOCK#          1

--可以用show all查看当前操作的文件和地址

BBED> show all

        FILE#           1

        BLOCK#          1

        OFFSET          0

        DBA             0x00400001 (4194305 1,1)

        FILENAME        /u01/app/oracle/oradata/orcl/system01.dbf

        BIFILE          bifile.bbd

        LISTFILE        filelist.txt

        BLOCKSIZE       8192

        MODE            Edit

        EDIT            Unrecoverable

        IBASE           Dec

        OBASE           Dec

        WIDTH           80

        COUNT           512

        LOGFILE         log.bbd

        SPOOL           No

BBED> map /v

File: /u01/app/oracle/oradata/orcl/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, 36 bytes               @484    

    ub4 kcvfhcpc                            @140    

    ub4 kcvfhrts                            @144    

    ub4 kcvfhccc                            @148    

    struct kcvfhbcp, 36 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

rdba地址在结构体kcvfhbfh中

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       0xbf79

   ub2 spare3_kcbh                          @18       0x0000

rdba地址转换(用电脑自带的calc计算器)

rdba由文件号和块号组成,共4个字节,文件号占10bit,块号占22bit

将0x00800001转换为2进制如下:

0000 0000 1000 0000 0000 0000 0000 0001(这里是2号文件1号块,因为上面用2号文件1号块覆盖的1号文件1号块)

1号文件1号块是0000 0000 0100 0000 0000 0000 0000 0001,对应的16进制为0x00400001

 

BBED> set offset 4   

        OFFSET          4

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

01008000 00000000 00000104 79bf0000 l ............y

<16 bytes per line>

BBED> modify /x 010040        --注意linux平台为小端,要调整

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

01004000 00000000 00000104 79bf0000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xbfb9, required = 0xbfb9

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       0xbfb9

   ub2 spare3_kcbh                          @18       0x0000

修复文件头文件大小(offset 44)

BBED> p kcvfhhdr

ub4 kccfhfsz                          @44       0x00011300

[oracle@dblab orcl]$ ll system01*

-rw-r----- 1 oracle oinstall 786440192 Oct 14 15:15 system01.dbf

SQL> select (786440192-8192)/8192 from dual;   --除去0号块大小

(786440192-8192)/8192

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

                96000

转换为16进制

SQL> select to_char(96000,'xxxxxxxxxxx') from dual;

TO_CHAR(9600

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

       17700

BBED> set offset 44

        OFFSET          44

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

00130100 00200000 02000300 00000000 l ..... ..........

<16 bytes per line>

BBED> modify /x 007701

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

00770100 00200000 02000300 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xdbb9, required = 0xdbb9

修复文件头文件号(offset 52)

将文件号从2号改成1号

BBED> p kcvfhhdr

ub2 kccfhfno                          @52       0x0002

BBED> set offset 52

        OFFSET          52

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

02000300 00000000 00000000 00000000 l ................

<16 bytes per line>

BBED> modify /x 01

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

01000300 00000000 00000000 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xdbba, required = 0xdbba

修复文件头root数据块号(offset 96)

修改root数据块号为1号520块

SQL> select to_char(520,'xxxxxxxxxxxxxxxxxxx') from dual;

TO_CHAR(520,'XXXXXXX

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

                 208

0000 0000 0100 0000 0000 0010 0000 1000

转换为16进制为0x00400208

 

如果数据库正常打开的话,可以根据下面语句查看

select fhrdb,FHFNO from x$kcvfh order by 2;

FHRDB FHFNO

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

4194824 1

SQL> select to_char(4194824,'xxxxxxxxx') from dual;

TO_CHAR(41

----------

400208

SQL> select dbms_utility.data_block_address_file(TO_NUMBER('400208','XXXXXXXX')) file_id,2 dbms_utility.data_block_address_block(TO_NUMBER('400208', 'XXXXXXXX'))block_id from dual;

FILE_ID BLOCK_ID

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

1 520 =>1号文件520号块

 

BBED> set offset 96  

        OFFSET          96

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

00000000 2a070000 00000000 81c92131 l ....*........

<16 bytes per line>

BBED> modify /x 080240

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

08024000 2a070000 00000000 81c92131

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xd9f2, required = 0xd9f2

修复文件创建SCN(offset 100)

BBED> p kcvfhcrs

struct kcvfhcrs, 8 bytes                    @100    

   ub4 kscnbas                              @100      0x0000072a

   ub2 kscnwrp                              @104      0x0000

从v$database视图中查看文件创建时scn(信息来自控制文件)

SQL> select FILE#,CREATION_CHANGE# from v$datafile;

         1                7

         2             1834

         3           923328

         4            16143

         5           971384

         6           987012

         7          1395171

         8          1395438

         9          1395738

        10          1503813

        11          1860850

        12          3041912

12 rows selected.

SQL> select to_char(1834,'xxxxxxxxxxx') from dual;

         72a

BBED> set offset 100

        OFFSET          100

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

2a070000 00000000 81c92131 8906eb3b l *.........

                                                   <16 bytes per line>

BBED> modify /x 07000000

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

07000000 00000000 81c92131 8906eb3b

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xdedf, required = 0xdedf

修复文件创建时间(offset 108)

SQL> select file#,

  2         to_char(creation_time, 'yyyy-mm-dd hh24:mi:ss') creation_time_file,

  3         (to_char(creation_time, 'yyyy') - 1988) * 12 * 31 * 24 * 3600 +

  4         (to_char(creation_time, 'mm') - 1) * 31 * 24 * 3600 +

  5         (to_char(creation_time, 'dd') - 1) * 24 * 3600 +

  6         to_char(creation_time, 'hh24') * 3600 + to_char(creation_time, 'mi') * 60 + to_char(creation_time, 'ss') creation_name_scn

  7    from v$datafile

  8   order by 1;

         1 2013-08-24 11:37:33         824297853

         2 2013-08-24 11:37:37         824297857

         3 2013-08-24 12:07:19         824299639

         4 2013-08-24 11:37:49         824297869

         5 2019-04-11 22:05:54        1005343554

         6 2019-05-14 09:21:03        1008235263

         7 2019-06-11 16:24:48        1010679888

         8 2019-06-11 16:24:58        1010679898

         9 2019-06-11 16:25:54        1010679954

        10 2019-07-18 14:42:33        1013956953

        11 2020-03-14 01:07:06        1034989626

        12 2020-03-14 01:30:54        1034991054

SQL> select to_char(824297853,'xxxxxxxxxxxx') from dual;

     3121c97d

BBED> set offset 108

        OFFSET          108

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

81c92131 8906eb3b 06200e00 00000000 l ........

<16 bytes per line>

BBED> modify /x 7dc92131

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

7dc92131 8906eb3b 06200e00 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xde23, required = 0xde23

修复文件状态(offset 138)

BBED> p offset 138

kcvfh.kcvfhsta

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

ub2 kcvfhsta                                @138      0x0004 (KCVFHOFZ)

当一个datafile处于fuzzy状态的时候,其kcvfhsta为0x04,这里是abort关闭,状态是04,不修改,如果是正常关闭,则是0x2000

修复文件头的表空间号(offset 332)

1号文件表空间号为0,根据下面语句查出

SQL> select FILE#,TS# from v$datafile;

         1          0

         2          1

         3          2

         4          4

         5          4

         6          6

         7          6

         8          6

         9          7

        10          8

        11          0

        12          2

12 rows selected.

BBED> p kcvfhtsn

sword kcvfhtsn                              @332      1

 

BBED> set offset 332

        OFFSET          332

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

01000000 06005359 53415558 00000000 l ......SYSAUX....

<16 bytes per line>

BBED> modify /x 00

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

00000000 06005359 53415558 00000000

<32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xde22, required = 0xde22

修复表空间长度(offset 336)

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

本例不用修改

修复表空间名称(offset 338)

将338~343的SYSAUX改为SYSTEM

SQL> select dump('SYSTEM',16) from dual;

Typ=96 Len=6: 53,59,53,54,45,4d

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

53595341 55580000 00000000 00000000 l SYSAUX..........<16 bytes per line>

BBED> set offset 338

        OFFSET          338

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

53595341 55580000 00000000 00000000 l SYSAUX..........<16 bytes per line>

BBED> set offset 341          --修改AUX为TEM

        OFFSET          341

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

41555800 00000000 00000000 00000000 l AUX.............<16 bytes per line>

BBED> modify /x 54454d

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

54454d00 00000000 00000000 00000000 <32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xde32, required = 0xde32

修复相对文件号(offset 368)

SQL> select FILE#,RFILE# from v$datafile;

         1          1

         2          2

         3          3

         4          4

         5          5

         6          6

         7          7

         8          8

         9          9

        10         10

        11         11

        12         12

BBED> set offset 368

        OFFSET          368

BBED> dump /v count 16

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

02000000 00000000 00000000 00000000 l ................<16 bytes per line>

BBED> modify /x 01

File: /u01/app/oracle/oradata/orcl/system01.dbf (1)

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

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

01000000 00000000 00000000 00000000 <32 bytes per line>

BBED> sum apply

Check value for File 1, Block 1:

current = 0xde31, required = 0xde31

修复检查点SCN(offset 484)

SQL> select file#,

  2         CREATION_CHANGE#,

  3         CHECKPOINT_CHANGE#,

  4         UNRECOVERABLE_CHANGE#,

  5         LAST_CHANGE#,

  6         OFFLINE_CHANGE#

  7    from v$datafile

  8   order by 1;

     FILE# CREATION_CHANGE# CHECKPOINT_CHANGE# UNRECOVERABLE_CHANGE# LAST_CHANGE# OFFLINE_CHANGE#

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

         1                7            4301646                     0                       925701

         2             1834            4301646                     0                       925701

         3           923328            4301646                     0                       925701

         4            16143            4301646                     0                       925701

         5           971384            4301646                     0                            0

         6           987012            4301646                     0                            0

         7          1395171            4301646                     0                            0

         8          1395438            4301646                     0                            0

         9          1395738            4301646                     0                            0

        10          1503813            4301646                     0                            0

        11          1860850            4301646                     0                            0

        12          3041912            4301646                     0                            0

SQL> select to_char(4301646,'xxxxxxxxxxxxxxxx') from dual;

           41a34e

BBED> p kcvfhckp

struct kcvfhckp, 36 bytes                   @484    

   struct kcvcpscn, 8 bytes                 @484    

      ub4 kscnbas                           @484      0x0041a34e

本例不用改

修复检查点时间(offset 492)

SQL> select file#,

  2         to_char(CHECKPOINT_TIME, 'yyyy-mm-dd hh24:mi:ss') CHECKPOINT_TIME_file,

  3         (to_char(CHECKPOINT_TIME, 'yyyy') - 1988) * 12 * 31 * 24 * 3600 +

  4         (to_char(CHECKPOINT_TIME, 'mm') - 1) * 31 * 24 * 3600 +

       (to_char(CHECKPOINT_TIME, 'dd') - 1) * 24 * 3600 +

       to_char(CHECKPOINT_TIME, 'hh24') * 3600 +

       to_char(CHECKPOINT_TIME, 'mi') * 60 + to_char(CHECKPOINT_TIME, 'ss') CHECKPOINT_TIME_scn

  from v$datafile

  9   order by 1;

     FILE# CHECKPOINT_TIME_FIL CHECKPOINT_TIME_SCN

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

         1 2020-10-14 10:26:48          1053772008

         2 2020-10-14 10:26:48          1053772008

         3 2020-10-14 10:26:48          1053772008

         4 2020-10-14 10:26:48          1053772008

         5 2020-10-14 10:26:48          1053772008

         6 2020-10-14 10:26:48          1053772008

         7 2020-10-14 10:26:48          1053772008

         8 2020-10-14 10:26:48          1053772008

         9 2020-10-14 10:26:48          1053772008

        10 2020-10-14 10:26:48          1053772008

        11 2020-10-14 10:26:48          1053772008

        12 2020-10-14 10:26:48          1053772008

SQL> select to_char(1053772008,'xxxxxxxxxxxxxxxxxxxxxxx') from dual;

TO_CHAR(1053772008,'XXXX

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

                3ecf48e8

BBED> p kcvfhckp

   ub4 kcvcptim                             @492      0x3ecf48e8

此例不用修改

dbv检查下文件头修改是否都正确

[oracle@dblab ~]$ dbv file=/u01/app/oracle/oradata/orcl/system01.dbf start=1 end=2

DBVERIFY: Release 11.2.0.4.0 - Production on Wed Oct 14 19:32:05 2020

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

DBVERIFY - Verification starting : FILE = /u01/app/oracle/oradata/orcl/system01.dbf

DBVERIFY - Verification complete

Total Pages Examined                 : 2

Total Pages Processed (Data)     : 0

Total Pages Failing   (Data)         : 0

Total Pages Processed (Index)    : 0

Total Pages Failing   (Index)        : 0

Total Pages Processed (Other)    : 2

Total Pages Processed (Seg)       : 0

Total Pages Failing   (Seg)           : 0

Total Pages Empty                       : 0

Total Pages Marked Corrupt        : 0

Total Pages Influx                        : 0

Total Pages Encrypted                : 0

Highest block SCN                      : 1860436 (0.1860436)

打开数据库

SQL> alter database open;

Database altered

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值