zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    HDOJ 1028 母函数分析
    尼姆博弈的典型例题
    HDOJ1232 畅通工程 DFS
    第一个八皇后
    HDOJ 1242
    我的“插入算法”实现
    第五讲 this 类变量 类方法
    我的“二分查找算法”实现
    我对锤子ROM 功能的看法——视觉篇
    第六讲 Java 四大特性:抽象 封装 继承 多态
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6805291.html
Copyright © 2011-2022 走看看