当前位置:  数据库>oracle

无归档情况下使用BBED处理ORA-01113错误

    来源: 互联网  发布时间:2017-06-16

    本文导语: 在丢失归档情况下,恢复时常会遇到ORA-01113错误,以下实验模拟表空间offline,然后在丢失归档文件的情况下使用BBED修改文件头信息,最后恢复数据文件;数据库版本: SQL> select * from v$version;BANNER-----------------------------------------------...

在丢失归档情况下,恢复时常会遇到ORA-01113错误,以下实验模拟表空间offline,然后在丢失归档文件的情况下使用BBED修改文件头信息,最后恢复数据文件;
数据库版本:

SQL> select * from v$version;
BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for Linux: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

数据文件信息:

SQL>  select file#,name, CHECKPOINT_CHANGE#,to_char(CHECKPOINT_TIME,'yyyy-mm-dd hh24:mi:ss')checkpoint_time,status,BLOCK_SIZE from v$datafile;
    FILE# NAME                                CHECKPOINT_CHANGE# CHECKPOINT_TIME    STATUS  BLOCK_SIZE
---------- ----------------------------------- ------------------ ------------------- ------- ----------
        1 /u01/app/oradata/sydb/system01.dbf            3161898 2015-04-13 20:46:37 SYSTEM        8192
        2 /u01/app/oradata/sydb/sysaux01.dbf            3161898 2015-04-13 20:46:37 ONLINE        8192
        3 /u01/app/oradata/sydb/undotbs01.dbf            3161898 2015-04-13 20:46:37 ONLINE        8192
        4 /u01/app/oradata/sydb/users01.dbf              3161898 2015-04-13 20:46:37 ONLINE        8192
        5 /disk2/oradata/sydb/tbs01.dbf                  3161898 2015-04-13 20:46:37 ONLINE        8192
        6 /disk2/oradata/sydb/tbs02.dbf                  3161898 2015-04-13 20:46:37 ONLINE        8192
        7 /disk2/oradata/sydb/tbs03.dbf                  3161898 2015-04-13 20:46:37 ONLINE        8192
        8 /tmp/tbs_tmp.dbf                              3161898 2015-04-13 20:46:37 ONLINE        8192

 

offline数据文件7并删除归档模拟ora-01113:

 

SQL> alter database datafile 7 offline;
Database altered.
SQL> alter system switch logfile;
System altered.
SQL> alter system switch logfile;
System altered.
SQL> alter database datafile 7 online;
alter database datafile 7 online
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/disk2/oradata/sydb/tbs03.dbf'

SQL> select file#,change#,time from v$recover_file;
    FILE#    CHANGE# TIME
---------- ---------- ---------
        7    3161898 13-APR-15

 

使用BBED需要修改的内容有:
ub4 kscnbas @484    #最后检查的SCN
 ub4 kcvcptim @492    #检查时间
ub4 kcvfhcpc @140  #检查点发生次数
ub4 kcvfhccc @148  #未知,但值一直小于kcvfhcpc 1

 

BBED> info
 File#  Name                                                        Size(blks)
 -----  ----                                                        ----------
    1  /u01/app/oradata/sydb/system01.dbf                              92160
    2  /u01/app/oradata/sydb/sysaux01.dbf                              71680
    3  /u01/app/oradata/sydb/undotbs01.dbf                              52480
    4  /u01/app/oradata/sydb/users01.dbf                                1600
    5  /disk2/oradata/sydb/tbs01.dbf                                  221696
    6  /disk2/oradata/sydb/tbs02.dbf                                    14592
    7  /disk2/oradata/sydb/tbs03.dbf                                    2560
    8  /tmp/tbs_tmp.dbf                                                  1280

 

 先确认好system表空间文件信息:

 

BBED> set dba 1,1 block 1
        DBA            0x00400001 (4194305 1,1)
        BLOCK#          1
BBED> print kcvfhckp
struct kcvfhckp, 36 bytes                  @484   
  struct kcvcpscn, 8 bytes                @484   
      ub4 kscnbas                          @484      0x003043a9
      ub2 kscnwrp                          @488      0x0000
  ub4 kcvcptim                            @492      0x34453174

BBED> dump/v dba 1,1 offset 484 count 30
 File: /u01/app/oradata/sydb/system01.dbf (1)
 Block: 1      Offsets:  484 to  513  Dba:0x00400001
-------------------------------------------------------
 a9433000 00000000 74314534 01000000 l ....t1E4....
 ab000000 2e080000 1000866b 0200    l .......k..

BBED> dump/v dba 1,1 offset 492 count 30
 File: /u01/app/oradata/sydb/system01.dbf (1)
 Block: 1      Offsets:  492 to  521  Dba:0x00400001
-------------------------------------------------------
 74314534 01000000 ab000000 2e080000 l t1E4........
 1000866b 02000000 00000000 0000    l ...k.......…

BBED> print kcvfhcpc
ub4 kcvfhcpc                                @140      0x00000237

BBED> dump/v dba 1,1 offset 140 count 30
 File: /u01/app/oradata/sydb/system01.dbf (1)
 Block: 1      Offsets:  140 to  169  Dba:0x00400001
-------------------------------------------------------
 37020000 fe522034 36020000 00000000 l 7...6.......
 00000000 00000000 00000000 0000    l ...........…

BBED> print kcvfhccc
ub4 kcvfhccc                                @148      0x00000236

BBED> dump/v dba 1,1 offset 148 count 30
 File: /u01/app/oradata/sydb/system01.dbf (1)
 Block: 1      Offsets:  148 to  177  Dba:0x00400001
-------------------------------------------------------
 36020000 00000000 00000000 00000000 l 6...............
 00000000 00000000 00000000 0000    l ..............

 

再确认数据文件7信息:

 

BBED> print kcvfhckp
struct kcvfhckp, 36 bytes                  @484   
  struct kcvcpscn, 8 bytes                @484   
      ub4 kscnbas                          @484      0x00303f2a
      ub2 kscnwrp                          @488      0x0000
  ub4 kcvcptim                            @492      0x34452bad
  ub2 kcvcpthr                            @496      0x0001
BBED> dump/v dba 7,1 offset 484 count 30
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1      Offsets:  484 to  513  Dba:0x01c00001
-------------------------------------------------------
 2a3f3000 00000000 ad2b4534 01000000 l *?0.........
 a8000000 65000000 10000000 0200    l e.........
 

BBED> dump/v dba 7,1 offset 492 count 30
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1      Offsets:  492 to  521  Dba:0x01c00001
-------------------------------------------------------
 ad2b4534 01000000 a8000000 65000000 l ....e...
 10000000 02000000 00000000 0000    l ...........…

BBED> print kcvfhcpc
ub4 kcvfhcpc                                @140      0x00000164
BBED> dump/v dba 7,1 offset 140
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1      Offsets:  140 to  169  Dba:0x01c00001
-------------------------------------------------------
 64010000 fe522034 63010000 00000000 l d...c.......
 00000000 00000000 00000000 0000    l ...........…

BBED> print kcvfhccc
ub4 kcvfhccc                                @148      0x00000163

BBED> dump/v dba 7,1 offset 148
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1      Offsets:  148 to  177  Dba:0x01c00001
-------------------------------------------------------
 63010000 00000000 00000000 00000000 l c...............
 00000000 00000000 00000000 0000    l ..............

 

00303f2a 刚好是v$recover_file 中查询到的CHANGE#值

SQL> select to_number('00303f2a','xxxxxxxxx') from dual;
TO_NUMBER('00303F2A','XXXXXXXXX')
---------------------------------
                          3161898

修改值:

 

BBED> modify /x a943 dba 7,1 offset 484
BBED> set offset +2
        OFFSET          486
BBED> modify /x 3000
BBED> dump /v dba 7,1 offset 484
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1      Offsets:  484 to  513  Dba:0x01c00001
-------------------------------------------------------
 a9433000 00000000 ad2b4534 01000000 l ........
 a8000000 65000000 10000000 0200    l e......…

BBED> modify /x 74314534 dba 7,1 offset 492
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1                Offsets:  492 to  521          Dba:0x01c00001
------------------------------------------------------------------------
 74314534 01000000 a8000000 65000000 10000000 02000000 00000000 0000

BBED> modify /x 37020000 dba 7,1 offset 140
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1                Offsets:  140 to  169          Dba:0x01c00001
------------------------------------------------------------------------
 37020000 fe522034 63010000 00000000 00000000 00000000 00000000 0000

BBED> modify /x 36020000 dba 7,1 offset 148
 File: /disk2/oradata/sydb/tbs03.dbf (7)
 Block: 1                Offsets:  148 to  177          Dba:0x01c00001
------------------------------------------------------------------------
 36020000 00000000 00000000 00000000 00000000 00000000 00000000 0000

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

 

确认修改:

 

SQL> select * from v$recover_file;
    FILE# ONLINE  ONLINE_ ERROR                                                                CHANGE# TIME
---------- ------- ------- ----------------------------------------------------------------- ---------- ---------
        7 OFFLINE OFFLINE UNKNOWN ERROR                                            3163049 13-APR-15
SQL>  column name format a35
SQL>  select file#,name, CHECKPOINT_CHANGE#,to_char(CHECKPOINT_TIME,'yyyy-mm-dd hh24:mi:ss')checkpoint_time,status,BLOCK_SIZE from v$datafile;
    FILE# NAME                                CHECKPOINT_CHANGE# CHECKPOINT_TIME    STATUS  BLOCK_SIZE
---------- ----------------------------------- ------------------ ------------------- ------- ----------
        1 /u01/app/oradata/sydb/system01.dbf            3163049 2015-04-13 21:11:16 SYSTEM        8192
        2 /u01/app/oradata/sydb/sysaux01.dbf            3163049 2015-04-13 21:11:16 ONLINE        8192
        3 /u01/app/oradata/sydb/undotbs01.dbf            3163049 2015-04-13 21:11:16 ONLINE        8192
        4 /u01/app/oradata/sydb/users01.dbf              3163049 2015-04-13 21:11:16 ONLINE        8192
        5 /disk2/oradata/sydb/tbs01.dbf                  3163049 2015-04-13 21:11:16 ONLINE        8192
        6 /disk2/oradata/sydb/tbs02.dbf                  3163049 2015-04-13 21:11:16 ONLINE        8192
        7 /disk2/oradata/sydb/tbs03.dbf                  3161898 2015-04-13 20:46:37 RECOVER      8192
        8 /tmp/tbs_tmp.dbf                              3163049 2015-04-13 21:11:16 ONLINE        8192

 

控制文件的信息没有被修改也无法通过BBED修改,所以此时无法恢复data file 7;

 

SQL> alter database datafile 7 online;
alter database datafile 7 online
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/disk2/oradata/sydb/tbs03.dbf'

SQL> recover datafile 7;
ORA-00283: recovery session canceled due to errors
ORA-01122: database file 7 failed verification check
ORA-01110: data file 7: '/disk2/oradata/sydb/tbs03.dbf'
ORA-01207: file is more recent than control file - old control file

 

通过重建控制文件恢复数据文件7:

 

SQL> alter database backup controlfile to trace;
SQL> shutdown immediate
SQL>STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "SYDB" NORESETLOGS  ARCHIVELOG
    MAXLOGFILES 16
    MAXLOGMEMBERS 3
    MAXDATAFILES 100
    MAXINSTANCES 8
    MAXLOGHISTORY 292
LOGFILE
  GROUP 1 '/u01/app/oradata/sydb/redo01.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 2 '/u01/app/oradata/sydb/redo02.log'  SIZE 50M BLOCKSIZE 512,
  GROUP 3 '/u01/app/oradata/sydb/redo03.log'  SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE
  '/u01/app/oradata/sydb/system01.dbf',
  '/u01/app/oradata/sydb/sysaux01.dbf',
  '/u01/app/oradata/sydb/undotbs01.dbf',
  '/u01/app/oradata/sydb/users01.dbf',
  '/disk2/oradata/sydb/tbs01.dbf',
  '/disk2/oradata/sydb/tbs02.dbf',
  '/disk2/oradata/sydb/tbs03.dbf',
  '/tmp/tbs_tmp.dbf'
CHARACTER SET UTF8
;
Control file created.
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 7 needs media recovery
ORA-01110: data file 7: '/disk2/oradata/sydb/tbs03.dbf''
SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.

SQL>  column name format a35
SQL>  select file#,name, CHECKPOINT_CHANGE#,to_char(CHECKPOINT_TIME,'yyyy-mm-dd hh24:mi:ss')checkpoint_time,status,BLOCK_SIZE from v$datafile;

    FILE# NAME                                CHECKPOINT_CHANGE# CHECKPOINT_TIME    STATUS  BLOCK_SIZE
---------- ----------------------------------- ------------------ ------------------- ------- ----------
        1 /u01/app/oradata/sydb/system01.dbf            3183058 2015-04-13 22:11:12 SYSTEM        8192
        2 /u01/app/oradata/sydb/sysaux01.dbf            3183058 2015-04-13 22:11:12 ONLINE        8192
        3 /u01/app/oradata/sydb/undotbs01.dbf            3183058 2015-04-13 22:11:12 ONLINE        8192
        4 /u01/app/oradata/sydb/users01.dbf              3183058 2015-04-13 22:11:12 ONLINE        8192
        5 /disk2/oradata/sydb/tbs01.dbf                  3183058 2015-04-13 22:11:12 ONLINE        8192
        6 /disk2/oradata/sydb/tbs02.dbf                  3183058 2015-04-13 22:11:12 ONLINE        8192
        7 /disk2/oradata/sydb/tbs03.dbf                  3183058 2015-04-13 22:11:12 ONLINE        8192
        8 /tmp/tbs_tmp.dbf                              3183058 2015-04-13 22:11:12 ONLINE        8192

 

注:不同情况,有可能还是无法打开数据库,比如报(ORA-01113: file 1 needs media recovery),尝试使用NORESETLOGS方式重建控制文件,然后在执行Media Recovery 。

--Then end


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Hp Unix 或Linux下用tar归档,Aix Unix无法解归档,急!
  • 切换Oracle的归档模式以及非归档模式
  • oracle的归档模式 ORACLE数据库归档日志常用命令
  • 邮件归档软件 MailArchiva
  • 远程归档工具 Cyphertite
  • 怎么归档自己的包!
  • 如何归档一个目录下的部分文件?
  • oracle 如何关闭打开归档日志
  • 查看修改Oracle10G归档日志空间的限制
  • Oralce 归档日志开启与关闭示例
  • oracle日志操作模式(归档模式和非归档模式的利与弊)
  • SQLite 归档工具 SQLAR
  • 兼容 tar 的归档工具 btar
  • 归档文件是什么玩意啊?
  • 文档归档引擎 Archive4J
  • 更改Oracle数据库的归档模式
  • Oracle 删除归档日志实例
  • 关于Oracle将目标数据库设为归档模式应该注意的问题
  • Oracle数据库归档模式的切换
  • Oracle中归档模式的定义简述


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3