在丢失归档情况下,恢复时常会遇到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.........
<16 bytes per line> 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 (2015-04-13)

无归档情况下使用BBED处理ORA-01113错误的更多相关文章

  1. KVM虚拟机内无agent情况下的监控方法

    KVM虚拟机内无agent情况下的监控(ceilometer实现) 今天看到大家在群里讨论KVM虚拟机的监控问题,而且是要求VM内无agent情况下的监控.这方面确实没有深入研究,但尚有些openst ...

  2. 关于img标签浏览器自带的边框,清除边框的解决方式(即img[src=""] img无路径情况下,灰色边框去除解决方法)

    详解img[src=""] img无路径情况下,灰色边框去除解决方法 1.Js解决办法 <html> <head> <meta charset=&qu ...

  3. Oracle 无备份情况下的恢复--控制文件/数据文件

    13.3无备份恢复控制文件 没有备份恢复控制文件其实就是在nomount状态,create control创建一个新的控制文件. dba必须知道4个信息才能正确的创建:数据库名.在线日志路径及其大小. ...

  4. Oracle 无备份情况下的恢复--临时文件/在线重做日志/ORA-00205

    13.5 恢复临时文件 临时文件没有也不应该备份.通过V$TEMPFILE可以找到所有的临时文件. 此类文件的损坏会造成需要使用临时表空间的命令执行失败,不至于造成实例崩溃或session中断.由于临 ...

  5. Oracle备份恢复之无备份情况下恢复undo表空间

    UNDO表空间存储着DML操作数据块的前镜像数据,在数据回滚,一致性读,闪回操作,实例恢复的时候都可能用到UNDO表空间中的数据.如果在生产过程中丢失或破坏了UNDO表空间,可能导致某些事务无法回滚, ...

  6. 迁移/home目录至新硬盘分区总结--无备份情况下

    搞了一天,终于成功迁移.由于一开始就没备份过程实在很曲折. 希望本篇对那些没有备份习惯的朋友们有所帮助. 准备工作: sudo vim /etc/fstab 在文件中加入: /dev/sdb8     ...

  7. Linux开启SELinux的情况下怎么解决nginx403跟502错误

    https://www.cnblogs.com/caijt/p/10978324.html 以上篇博客中说了怎么在linux部署asp.net core  跟 nginx,里面成功的前提是把SElin ...

  8. CentsOS7无网情况下安装mysql5.7

    1.需求就不用讲了,客户现场,政府环境,银行环境,大多是没网的,所以无网安装是很有必要的 mysql下载路径:https://dev.mysql.com/downloads/mysql/ 查看自己Li ...

  9. Kali Linux ——在无网络情况下安装无线网卡驱动

    1.背景: 今日刚刚开始学习kali linux,众所周知,安装完成后,系统是没有无线网卡驱动的,这就对学生党造成相当的困扰:校园网要连接有线是需要认证客户端的,而认证客户端只有windows端,如此 ...

随机推荐

  1. 【转】用Jmeter制造测试数据

    在平时的测试过程中,肯定会有碰到需要一批大量的数据的情况,如果这些数据本身没有太多的要求,或者说需求比较简单,可以通过简单的参数化实现的,推荐用Jmeter来造数据. 限制: Jmeter只能支持ja ...

  2. java里面的public static void main(String[] args)

    package com.java_1; public class Hello { public static void main(String[] args){ System.out.println( ...

  3. UUID是如何保证全局唯一的

    UUID由以下几部分的组合: (1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同.         据说时间粒度很 ...

  4. 《Java核心技术》 -- 读书笔记 ① - 预热

    引言 之前通过网上的实例自己使用了Java的一些技术及轮子快速的的“烂“造了一些小应用,但是毕竟没有认真地了解和认知Java,遂打算花一个月左右的时间来细细品味一下... 从头开始,慢慢深入!! Ja ...

  5. Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入(1)

    一.本系列分为6部分 1.Centos 7.0 下安装 Zabbix server 3.0服务器的安装及 监控主机的加入 2.Centos 6.5 下安装 Zabbix server 3.0服务器的安 ...

  6. 两栏自适应布局,右侧div宽高不定

    .main,.sitebar{       height: 300px;       font: bolder 20px/300px "微软雅黑";       color: bl ...

  7. 根据段落编号自动添加书签的VBA

    Sub 宏1() ' ' 宏1 宏 ' '    Dim myRange As Word.Range Dim num As String, content As String Selection.Ho ...

  8. 深入浅出 Java Concurrency (15): 锁机制 part 10 锁的一些其它问题

      主要谈谈锁的性能以及其它一些理论知识,内容主要的出处是<Java Concurrency in Practice>,结合自己的理解和实际应用对锁机制进行一个小小的总结. 首先需要强调的 ...

  9. python开发_python关键字

    python3.3.2中的关键字如下: The following identifiers are used as reserved words, or keywords of the languag ...

  10. Python网络编程与并发编程

    网络编程基础 黏包 , 并发 计算机网络的发展及基础网络概念 Python 中的进程与 锁 Python IO 多路复用 \协程