zoukankan      html  css  js  c++  java
  • 非归档数据文件offline的恢复

    本文主要介绍非归档模式下offline数据文件的恢复,测试过程如下:

    SQL> select * from v$version where rownum<3;

    BANNER
    ----------------------------------------------------------------
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
    PL/SQL Release 10.2.0.5.0 - Production

    SQL> archive log list;
    Database log mode              No Archive Mode
    Automatic archival             Disabled
    Archive destination            /u01/prod_arch
    Oldest online log sequence     17
    Current log sequence           19

    ---控件文件中的SCN
    SQL> select file#,status,checkpoint_change# from v$datafile order by 1;

         FILE# STATUS  CHECKPOINT_CHANGE#
    ---------- ------- ------------------
             1 SYSTEM              554606
             2 ONLINE              554606
             3 ONLINE              554606
             4 ONLINE              554606
             5 ONLINE              554606

          

    --数据文件头中的SCN

    SQL> select file#,status,checkpoint_change# from v$datafile_header order by 1;

         FILE# STATUS  CHECKPOINT_CHANGE#
    ---------- ------- ------------------
             1 ONLINE              554606
             2 ONLINE              554606
             3 ONLINE              554606
             4 ONLINE              554606
             5 ONLINE              554606

    --日志文件的情况

    SQL> select * from v$Log;

        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS ARC   STATUS           FIRST_CHANGE#    FIRST_TIM
         ----------        ----------      ----------              ----------      ----------       ---    ----------------            -------------                  ---------
             1                    1             19                  52428800          1         NO     CURRENT                 543593            29-OCT-13
             2                    1             17                  52428800          1        YES     INACTIVE                500547             29-OCT-13
             3                    1             18                  52428800          1        YES     INACTIVE                521183             29-OCT-13

    --offline数据文件5,在为进行日志切换的i情况下直接rcover然后在online就可以恢复。

    SQL> alter database datafile 5 offline drop;

    Database altered.

    SQL> alter database datafile 5 online;
    alter database datafile 5 online
    *
    ERROR at line 1:
    ORA-01113: file 5 needs media recovery if it was restored from backup, or END BACKUP if it was not
    ORA-01110: data file 5: '/u01/app/oracle/oradata/ptod/zxy01.dbf'


    SQL> recover datafile 5;
    Media recovery complete.
    SQL> alter database datafile 5 online;

    Database altered.

    二、在日志被覆盖的情况下:

    SQL> alter system switch logfile;

    System altered.

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

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
             1             554973
             2             554973
             3             554973
             4             554973
             5             554973

    SQL> select * from v$log;

        GROUP#    THREAD#  SEQUENCE#      BYTES       MEMBERS     ARC     STATUS        FIRST_CHANGE#     FIRST_TIM
         ----------         ----------          ----------          ----------         ----------         ---      ----------------           -------------                   ---------
             1                    1                  22              52428800          1               NO     INACTIVE                554969               30-OCT-13
             2                    1                  23              52428800          1               NO     INACTIVE                554971               30-OCT-13
             3                    1                  24              52428800          1               NO     CURRENT               554973               30-OCT-13

    SQL> alter database datafile 5 offline drop;

    Database altered.

    SQL> alter system switch logfile;

    System altered.

    SQL> alter system switch logfile;

    System altered.

    SQL> alter system switch logfile;

    System altered.

    SQL> alter system switch logfile;

    System altered.

    SQL> select * from v$log;

        GROUP#    THREAD#  SEQUENCE#      BYTES    MEMBERS     ARC      STATUS           FIRST_CHANGE#      FIRST_TIM
         ----------        ----------          ----------           ----------      ----------          ---       ----------------             -------------                    ---------
             1                    1                  28             52428800          1              NO      CURRENT               555067                  30-OCT-13
             2                    1                  26             52428800          1              NO      INACTIVE                555052                  30-OCT-13
             3                    1                  27             52428800          1              NO      INACTIVE                555055                  30-OCT-13

    SQL> alter database datafile 5 online;
    alter database datafile 5 online
    *
    ERROR at line 1:
    ORA-01113: file 5 needs media recovery if it was restored from backup, or END BACKUP if it was not
    ORA-01110: data file 5: '/u01/app/oracle/oradata/ptod/zxy01.dbf'

    SQL> recover datafile 5;
    ORA-00279: change 554973 generated at 10/30/2013 23:28:26 needed for thread 1
    ORA-00289: suggestion : /u01/prod_arch/1_24_829999096.dbf
    ORA-00280: change 554973 for thread 1 is in sequence #24


    Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
    cancel
    Media recovery cancelled.

    SQL> alter database datafile 5 online;
    alter database datafile 5 online
    *
    ERROR at line 1:
    ORA-01113: file 5 needs media recovery if it was restored from backup, or END BACKUP if it was not
    ORA-01110: data file 5: '/u01/app/oracle/oradata/ptod/zxy01.dbf'

    ---下面用bbed来检查点信息:

    BBED> info
     File#  Name                                                        Size(blks)
     -----  ----                                                        ----------
         1  /u01/app/oracle/oradata/ptod/system01.dbf                            0
         2  /u01/app/oracle/oradata/ptod/undotbs03.dbf                           0
         3  /u01/app/oracle/oradata/ptod/sysaux01.dbf                            0
         4  /u01/app/oracle/oradata/ptod/users01.dbf                             0
         5  /u01/app/oracle/oradata/ptod/zxy01.dbf                               0

    BBED> set file 5 block 1
            FILE#           5
            BLOCK#          1

    BBED> p kcvfhckp
    struct kcvfhckp, 36 bytes                   @484    
       struct kcvcpscn, 8 bytes                 @484    
          ub4 kscnbas                           @484      0x000877dd---数据文件头的SCN低4字节值
          ub2 kscnwrp                           @488      0x0000
       ub4 kcvcptim                             @492      0x317c161a
       ub2 kcvcpthr                             @496      0x0001
       union u, 12 bytes                        @500    
          struct kcvcprba, 12 bytes             @500    
             ub4 kcrbaseq                       @500      0x00000018---数据文件当前写的redolog sequence。
            
    ub4 kcrbabno                       @504      0x00000002---数据文件当前写的redolog的block号
     
            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

    因此我只需要把红色部分的信息改成与正常的数据文件的值一样,骗过oracle的检测。

    BBED> set file 4 blcok 1
            FILE#           4
    BBED-00202: invalid parameter (blcok)


    BBED> set file 4 block 1
            FILE#           4
            BLOCK#          1

    BBED> p kcvfhckp
    struct kcvfhckp, 36 bytes                   @484    
       struct kcvcpscn, 8 bytes                 @484    
          ub4 kscnbas                           @484      0x0008783b
          ub2 kscnwrp                           @488      0x0000
       ub4 kcvcptim                             @492      0x317c1711
       ub2 kcvcpthr                             @496      0x0001
       union u, 12 bytes                        @500    
          struct kcvcprba, 12 bytes             @500    
             ub4 kcrbaseq                       @500      0x0000001c
             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

    BBED> d /v offset 484 count 16
     File: /u01/app/oracle/oradata/ptod/users01.dbf (4)
     Block: 1       Offsets:  484 to  499  Dba:0x01000001
    -------------------------------------------------------
     3b780800 0000af76 11177c31 01008e00 l ;x....|1....

     <16 bytes per line>

    BBED> set file 5 block 1
            FILE#           5
            BLOCK#          1

    BBED> modify /x 3b7808 offset 484
    Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
     File: /u01/app/oracle/oradata/ptod/zxy01.dbf (5)
     Block: 1                Offsets:  484 to  499           Dba:0x01400001
    ------------------------------------------------------------------------
     3b780800 0000af76 1a167c31 01008e00

     <32 bytes per line>

    BBED> d /v offset 484 count 16
     File: /u01/app/oracle/oradata/ptod/zxy01.dbf (5)
     Block: 1       Offsets:  484 to  499  Dba:0x01400001
    -------------------------------------------------------
     3b780800 0000af76 1a167c31 01008e00 l ;x....|1....

     <16 bytes per line>

    BBED> modify /x 18 offset 500
     File: /u01/app/oracle/oradata/ptod/zxy01.dbf (5)
     Block: 1                Offsets:  500 to  515           Dba:0x01400001
    ------------------------------------------------------------------------
     18000000 02000000 10000000 02000000

     <32 bytes per line>

    BBED> sum apply
    Check value for File 5, Block 1:
    current = 0x9989, required = 0x9989

    BBED> exit

    ----在查看SCN的情况,试着recover

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

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
             1             555687
             2             555687
             3             555687
             4             555687
             5             554973

    SQL> select file#,checkpoint_change# from v$datafile_header;

         FILE# CHECKPOINT_CHANGE#
    ---------- ------------------
             1             555687
             2             555687
             3             555687
             4             555687
             5             555067

    SQL> alter database datafile 5 online;
    alter database datafile 5 online
    *
    ERROR at line 1:
    ORA-01113: file 5 needs media recovery if it was restored from backup, or END BACKUP if it was not
    ORA-01110: data file 5: '/u01/app/oracle/oradata/ptod/zxy01.dbf'


    SQL> recover datafile 5;
    Media recovery complete.
    SQL> alter database datafile 5 online;

    Database altered.

    成功online数据文件5!

         

  • 相关阅读:
    NUTCH Exception in thread "Thread-12751" java.lang.OutOfMemoryError: PermGen space
    未登录词识别
    中文分词索引
    hadoop 存储空间满了
    nutch 生产者队列的大小如何控制 threadcount * 50
    nutch 采集到的数据与实际不符
    nutch 采集效率--设置采集间隔
    异常: http://www.ly.com/news/visa.html: java.io.IOException: unzipBestEffort returned null
    hbase 取多个版本数据
    JavaScript制作时钟特效
  • 原文地址:https://www.cnblogs.com/pangblog/p/3400153.html
Copyright © 2011-2022 走看看