oracle data file header replace(測)

SQL> create tablespace rm_tbs datafile 'f1.dbf' size 10m;

Tablespace created.

SQL> select file#,name from v$datafile;

[oracle@VSZ-ORCLE-jftest ~]$ rm /home/oracle/product/10g/dbs/f1.dbf

[oracle@VSZ-ORCLE-jftest ~]$ exit

exit

SQL> select file#,name from v$datafile;

 13  /home/oracle/product/10g/dbs/f1.dbf

13 rows selected.

SQL> alter tablespace rm_tbs add datafile 'f2.dbf' size 10m;

Tablespace altered.

SQL> select file#,name from v$datafile;

13 /home/oracle/product/10g/dbs/f1.dbf

14 /home/oracle/product/10g/dbs/f2.dbf

14 rows selected.

SQL> shutdown immediate

ORA-03113: end-of-file on communication channel

[oracle@VSZ-ORCLE-jftest ~]$ sqlplus /nolog

SQL*Plus: Release 10.2.0.5.0 - Production on Fri Jul 25 09:37:29 2014

Copyright (c) 1982, 2010, Oracle.  All Rights Reserved.

SQL> conn / as sysdba

Connected to an idle instance.

SQL> startup

ORACLE instance started.

Total System Global Area 2147483648 bytes

Fixed Size                  2097656 bytes

Variable Size             654315016 bytes

Database Buffers         1476395008 bytes

Redo Buffers               14675968 bytes

Database mounted.

ORA-01157: cannot identify/lock data file 13 - see DBWR trace file

ORA-01110: data file 13: '/home/oracle/product/10g/dbs/f1.dbf'

SQL>       

SQL> select file#||' '||name||' '||bytes from v$datafile;

11 /home/oracle/product/10g/dbs/datafile2.dbf 10485760

12 /home/oracle/product/10g/dbs/system_audit_01.dbf 104857600

13 /home/oracle/product/10g/dbs/f1.dbf 10485760

14 /home/oracle/product/10g/dbs/f2.dbf 10485760

Database mounted.

ORA-01122: database file 13 failed verification check

ORA-01110: data file 13: '/home/oracle/product/10g/dbs/f1.dbf'

ORA-01204: file number is 14 rather than 13 - wrong file

############################## bbed --rdba_kcbh

BBED> map /v

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                                     Dba:0x03400001     --正确数据

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

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        0x03800001   --错误数据:

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

   ub2 spare3_kcbh                          @18       0x0000

BBED> sum apply

Check value for File 13, Block 1:

current = 0xd0a0, required = 0xd0a0

############################## bbed --kcvfhrfn

BBED> show

FILE#           13

        BLOCK#          1

        OFFSET          368

        DBA             0x03400001 (54525953 13,1)

        FILENAME        /home/oracle/product/10g/dbs/f1.dbf

        BIFILE          bifile.bbd

        LISTFILE        /home/oracle/hjbbed/bbedlist

        BLOCKSIZE       8192

MODE            Edit

        EDIT            Unrecoverable

        IBASE           Dec

        OBASE           Dec

        WIDTH           80

        COUNT           512

        LOGFILE         log.bbd

        SPOOL           No

BBED> dump

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:  368 to  879           Dba:0x03400001

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

 0e000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

 00000000 00000000 00000000 00000000 3892b92a 01000000 00000000 00000000

BBED> modify /x 0d

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:  368 to  879           Dba:0x03400001

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

 0d000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000

 00000000 00000000 00000000 00000000 3892b92a 01000000 00000000 00000000

BBED> sum apply

Check value for File 13, Block 1:

current = 0xd0a3, required = 0xd0a3

############################## bbed --kccfhfno

BBED> p kcvfhhdr

struct kcvfhhdr, 76 bytes                   @20     

   ub4 kccfhswv                             @20       0x00000000

   ub4 kccfhcvn                             @24       0x0a200500

   ub4 kccfhdbi                             @28       0x07e116ae

   text kccfhdbn[0]                         @32      T

   text kccfhdbn[1]                         @33      E

   text kccfhdbn[2]                         @34      X

   text kccfhdbn[3]                         @35      T

text kccfhdbn[4]                         @36      

   text kccfhdbn[5]                         @37      

   text kccfhdbn[6]                         @38      

   text kccfhdbn[7]                         @39      

   ub4 kccfhcsq                             @40       0x000091ad

   ub4 kccfhfsz                             @44       0x00000500

   s_blkz kccfhbsz                          @48       0x00

   ub2 kccfhfno                             @52       0x000e

############################## bbed --kscnbas  


BBED> modify /x 0d

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

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:   52 to  563           Dba:0x03400001

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

 0d000300 00000000 00000000 00000000 00000000 00000000 00000000 00000000 

 

 BBED> p kcvfhcrs

struct kcvfhcrs, 8 bytes                    @100    

   ub4 kscnbas                              @100      0x01addf00

   ub2 kscnwrp                              @104      0x0000

BBED>   set offset 100

        OFFSET          100

BBED> dump

File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:  100 to  611           Dba:0x03400001

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

 00dfad01 00000000 378ee432 b01a642f a9ec0500 00000000 00000000 00000000

 00000000 00000400 02000000 00000000 01000000 00000000 00000000 00000000

BBED> modify /x cc 

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:  100 to  611           Dba:0x03400001

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

 ccdfad01 00000000 378ee432 b01a642f a9ec0500 00000000 00000000 00000000

 

BBED> sum apply

############################## bbed --kscnbas


 

SQL> alter database datafile 13 online;

alter database datafile 13 online

*

ERROR at line 1:

ORA-01122: database file 13 failed verification check

ORA-01110: data file 13: '/home/oracle/product/10g/dbs/f1.dbf'

ORA-01202: wrong incarnation of this file - wrong creation time

############################## bbed --kcvfhcrt

BBED> p kcvfhcrt

ub4 kcvfhcrt                                @108      0x32e48e37

BBED> set offset 108

        OFFSET          108

BBED> dump

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

Block: 1                Offsets:  108 to  619           Dba:0x03400001

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

 378ee432 b01a642f a9ec0500 00000000 00000000 00000000 00000000 00000400

 02000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000

BBED> modify /x 8d

 File: /home/oracle/product/10g/dbs/f1.dbf (13)

 Block: 1                Offsets:  109 to  620           Dba:0x03400001

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

 8de432b0 1a642fa9 ec050000 00000000 00000000 00000000 00000000 00040002

 00000000 00000001 00000000 00000000 00000000 00000000 00000000 00000000

 BBED> sum apply

Check value for File 13, Block 1:

current = 0xd2b3, required = 0xd2b3

SQL> select file#,to_char(creation_time,'yyyymmdd hh24miss') from v$datafile;

12 20140709 153030

        13 20140725 093536

        14 20140725 093655

SQL>  alter database datafile 13 online;

    alter database datafile 13 online

ERROR at line 1:

ORA-01113: file 13 needs media recovery if it was restored from backup, or END 【不重新启动server可能没这个问题】

BACKUP if it was not

ORA-01110: data file 13: '/home/oracle/product/10g/dbs/f1.dbf'

SQL> recover datafile 13;

Media recovery complete.

SQL> alter database datafile 13 online;

Database altered.

--时间信息换算例如以下:

SELECT TO_NUMBER('32e48e37','XXXXXXXX')  from dual

853839415  --十进制

26 06 24 09 36 55--差异天数

时间原来这样算

select 26*12*31*24*60*60 --年

       +6*31*24*60*60+   --月

       24*24*60*60+      --天

       9*60*60+          --小时

       36*60             --分钟

       +55 from dual    --s

20140725 093536

26 06 24 09 35 36--差异天数

select 26*12*31*24*60*60 --年

       +6*31*24*60*60+   --月

       24*24*60*60+      --天

       9*60*60+          --小时

       35*60             --分钟

       +36 from dual    --s

853839336

select to_char(853839336,'XXXXXXXX') from dual          -- 32E48DE8  文件13创建时间

select to_char(853839415,'XXXXXXXX') from dual          -- 32E48E37

SELECT TO_NUMBER('32E48DE8','XXXXXXXX')  from dual

853839336

---

01addf00

SELECT TO_NUMBER('01addf00','XXXXXXXX')  from dual

--28172032

select to_char(28172032,'XXXXXXXX') from dual

--1ADDF00

select to_char(28171980,'XXXXXXXX') from dual

-- 1ADDECC

--这个实验告诉我们,实验要自己做。做了才知道哪一步非常重要..

其它

须要调整的是:

ub4 rdba_kcbh                         @4      ---data block address

ub2 kccfhfno                          @52     ---file number

ub4 kscnbas                           @100    ---scn bas

ub4 kcvfhcrt                           @108    ---file create time

ub4 kcvfhrfn                           @368    ---reference file number

上一篇:【原生态】Http请求数据 与 发送数据


下一篇:Google Guava的splitter用法