通过BBED 跳过归档,以当前数据库 8号文件为例:
SQL> select * from v$dbfile where file#=8;
FILE# NAME
---------- --------------------------------------------------
8 /u01/app/oracle/oradata/orcl/d4k01.dbf 1、rman 备份 8号文件
RMAN> backup datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf' format '/home/oracle/back/d4k01_%U.bak';
Starting backup at 03-SEP-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting full datafile backup set
channel ORA_DISK_1: specifying datafile(s) in backup set
input datafile file number=00008 name=/u01/app/oracle/oradata/orcl/d4k01.dbf
channel ORA_DISK_1: starting piece 1 at 03-SEP-16
channel ORA_DISK_1: finished piece 1 at 03-SEP-16
piece handle=/home/oracle/back/d4k01_03reraaj_1_1.bak tag=TAG20160903T004403 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 03-SEP-16 2、进行多次日志切换(用于产生多个日志归档)
SQL> alter system switch logfile; 3、将 8 号数据文件脱机,并删除
SQL> alter database datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf' offline;
rm -rf /u01/app/oracle/oradata/orcl/d4k01.dbf 4、rman还原 8 号文件
RMAN> restore datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf';
Starting restore at 03-SEP-16
using channel ORA_DISK_1
channel ORA_DISK_1: starting datafile backup set restore
channel ORA_DISK_1: specifying datafile(s) to restore from backup set
channel ORA_DISK_1: restoring datafile 00008 to /u01/app/oracle/oradata/orcl/d4k01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/back/d4k01_03reraaj_1_1.bak
channel ORA_DISK_1: piece handle=/home/oracle/back/d4k01_03reraaj_1_1.bak tag=TAG20160903T004403
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:07
Finished restore at 03-SEP-16 5、联机 8号数据文件,提示需要介质恢复
因为在rman备份的数据文件,写入数据文件头的检查点(V$DATAFILE_HEADER 视图的 CHECKPOINT_CHANGE#) 是备份时候的检查点编号,
切换多次日志后,在控制文件(V$DATAFILE 视图的 CHECKPOINT_CHANGE#) 里的是当前数据库检查点编号,这两个编号不一致,
所以需要介质恢复,也就是读取备份之后,所产生的redo日志。 6、介质恢复的起点,记录在数据文件头,分两部分(检查点和rba) 7、dump数据文件头
SQL> alter system set events 'immediate trace name file_hdrs level 10'; 8、在dump文件中找到 8 号数据文件对应的内容
DATA FILE #8:
name #28: /u01/app/oracle/oradata/orcl/d4k01.dbf
creation size=12800 block size=8192 status=0x1c head=28 tail=28 dup=1
tablespace 11, index=9 krfil=8 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:92 scn: 0x0000.004218e6 09/03/2016 00:45:06
Stop scn: 0x0000.00421998 09/03/2016 00:52:57
Creation Checkpointed at scn: 0x0000.00325a8a 06/15/2016 18:20:45
thread:1 rba:(0x30.992c.10)
--------------------------------------------------------------------------
Tablespace #11 - D4K rel_fn:8
Creation at scn: 0x0000.00325a8a 06/15/2016 18:20:45
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x3661a1e6 scn: 0x0000.002387eb
prev reset logs count:0x361abe00 scn: 0x0000.000e6c20
recovered at 09/03/2016 01:00:43
status:0x0 root dba:0x00000000 chkpt cnt: 77 ctl cnt:76
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.00421867 09/03/2016 00:44:03
thread:1 rba:(0x69.1056d.10) 在dump文件里面8号文件有两大部分:
1、data file 8# (这部分来着控制文件,是当前日志的检查点),
2、Tablespace #11 - D4K rel_fn:8 (这是8号文件对应的表空间,这部分数据来自数据文件头,是需要修改的部分) 9、修改 rba和 checkpoint at scn ,将其修改到指定的归档日志开始恢复(归档日志的序列号和检查点)
通过计算如下rba 的到 从 105 号归档的 66925号块开始恢复 (16进制69为10进制105...)
Checkpointed at scn: 0x0000.00421867 09/03/2016 00:44:03
thread:1 rba:(0x69.1056d.10) 查询归档日志视图(V$archived_log),获取序列号和检查点信息
SQL> select sequence#,first_change# from v$archived_log;
SEQUENCE# FIRST_CHANGE#
---------- -------------
103 4299914
104 4300188
105 4324652
.................
120 4331692
121 4331695
122 4331698
123 4331701
124 4331704
125 4331707
126 4331710
127 4331713
128 4331716
129 4331719 10、通过BBED,修改rba和检查点,将其改到第120号归档
BBED> show all;
FILE# 8
BLOCK# 1
OFFSET 0
DBA 0x02000001 (33554433 8,1)
FILENAME /u01/app/oracle/oradata/orcl/d4k01.dbf
BIFILE bifile.bbd
LISTFILE /home/oracle/bbed.lit
BLOCKSIZE 8192
MODE Edit
EDIT Unrecoverable
IBASE Dec
OBASE Dec
WIDTH 80
COUNT 512
LOGFILE log.bbd
SPOOL No BBED> dump
File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
Block: 1 Offsets: 0 to 511 Dba:0x02000001
------------------------------------------------------------------------
0ba20000 01000002 00000000 00000104 86390000 00000000 0000200b 7e099055
4f52434c 00000000 b39a0000 00960000 00200000 08000300 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 8a5a3200 00000000 7dd78336 e6a16136 eb872300 00000000 00000000
00000000 00000000 00000000 4d000000 3baded36 4c000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 0b000000 03004434 4b000000 00000000 00000000
00000000 00000000 00000000 00000000 08000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00be1a36 206c0e00 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 67184200 00006f6c 53a9ed36 01000000 69000000 6d050100 1000ffff
<32 bytes per line> 在bbed的dump中查找 rba的日志块号(1056d)和检查点(421867),在bbed中是反的,即为:6d0501 和 671842
使用find命令:
BBED> find /x 6d0501
File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
Block: 1 Offsets: 504 to 1015 Dba:0x02000001
BBED> find /x 67184200
File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
Block: 1 Offsets: 484 to 995 Dba:0x02000001 将检查点修改为120号归档的检查点(4331692),转换为16进制为(4218AC),反过来为(AC1842)
BBED> modify /x AC1842 offset 484 将rba的日志序列号改为(120),转换16进制为(78)
BBED> modify /x 78 offset 500 将rba中的日志块号改小一点,改为从第三号块开始
BBED> modify /x 110000 offset 504 改完dump结果如下:
BBED> dump
File: /u01/app/oracle/oradata/orcl/d4k01.dbf (8)
Block: 1 Offsets: 0 to 511 Dba:0x02000001
------------------------------------------------------------------------
0ba20000 01000002 00000000 00000104 213c0000 00000000 0000200b 7e099055
4f52434c 00000000 b39a0000 00960000 00200000 08000300 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 8a5a3200 00000000 7dd78336 e6a16136 eb872300 00000000 00000000
00000000 00000000 00000000 4d000000 3baded36 4c000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 0b000000 03004434 4b000000 00000000 00000000
00000000 00000000 00000000 00000000 08000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00be1a36 206c0e00 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 ac184200 00006f6c 53a9ed36 01000000 78000000 11000000 1000ffff
<32 bytes per line> 重新计算校验和
BBED> sum apply
Check value for File 8, Block 1:
current = 0x3c21, required = 0x3c21 11、恢复8号文件
SQL> recover datafile '/u01/app/oracle/oradata/orcl/d4k01.dbf';
ORA-00279: change 4331692 generated at 09/03/2016 00:44:03 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/oradata/archive/1_120_912368102.dbf
ORA-00280: change 4331692 for thread 1 is in sequence #120
Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
AUTO
ORA-00279: change 4331695 generated at 09/03/2016 00:45:02 needed for thread 1
ORA-00289: suggestion : /u01/app/oracle/oradata/archive/1_121_912368102.dbf
ORA-00280: change 4331695 for thread 1 is in sequence #121

BBED跳过归档的更多相关文章

  1. 使用BBED跳过归档进行恢复

    https: 使用BBED跳过归档进行恢复 数据库启动异常,提示6号文件丢失 SQL> startup ORACLE instance started. Total System Global ...

  2. 05 使用bbed跳过归档恢复数据文件

    5 使用BBED跳过归档 在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复 1 开启归档 --shutdown immediate --startup mount --alter data ...

  3. 【Oracle】使用BBED跳过丢失的归档

    在recover datafile的过程其中假设丢失了须要的归档将使得recover无法进行.使用bbed工具能够跳过丢失的归档进行recover datafile. 实验步骤例如以下: SYS@OR ...

  4. Oracle特殊恢复原理与实战(DSI系列)

    1.深入浅出Oracle(DSI系列Ⅰ) 2.Oracle特殊恢复原理与实战(DSI系列Ⅱ) 3.Oracle SQL Tuning(DSI系列Ⅲ)即将开设 4.Oracle DB Performan ...

  5. oracle dis系列课程总结

    oracle dis系列课程总结 1 bbed安装和介绍 --1 bbed的安装--(Oracle Block Brower and EDitor Tool) 2 controlfile 丢失的恢复 ...

  6. Oracle--RMAN Recover 缺失的归档操作

    一,环境简介 Oracle RMAN 备份的恢复分2个步骤:RESTRE 和 RECOVER.在这里回复的时候是依赖者归档文件的,当周一完成数据全备,保留归档的情况下,后期数据有问题,恢复的时候发现少 ...

  7. KingbaseES R3 集群主库归档失败案例

    案例说明: 本案例用于KingbaseES R3集群归档进程归档日志失败的处理,对于一线的生产环境具有 一定的参考意义. 数据库版本: TEST=# select version(); VERSION ...

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

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

  9. Oracle11gr2_ADG管理之跳归档恢复dg实战

    模拟故障 关闭备库 SQL> shutdown immediate; Database closed. Database dismounted. ORACLE instance shut dow ...

随机推荐

  1. Android中使用开源框架Fresco处理图片

    本文为原创博文,转载请注明原文链接:http://www.cnblogs.com/panhouye/p/6278116.html 关于Fresco的优点大家自行谷歌吧,它太强大太优秀了,我这一片小博文 ...

  2. express框架+jade+bootstrap+mysql开发用户注册登录项目

    完整的项目代码(github):https://github.com/suqinhui/express-demo express是基于Node.js平台的web应用开发框架,用express框架开发w ...

  3. openresty 前端开发轻量级MVC框架封装一(控制器篇)

    通过前面几章,我们已经掌握了一些基本的开发知识,但是代码结构比较简单,缺乏统一的标准,模块化,也缺乏统一的异常处理,这一章我们主要来学习如何封装一个轻量级的MVC框架,规范以及简化开发,并且提供类似p ...

  4. hdu1046

    #include<iostream> #include<cmath> using namespace std; int main() { int T,t=0,m,n; cin& ...

  5. scapy流量嗅探简单使用

    官方文档:http://scrapy-chs.readthedocs.io/zh_CN/latest/index.html 参考链接:http://blog.csdn.net/Jeanphorn/ar ...

  6. SublimeText快捷键

    在我做了一次包含一些现场编码的演示后,一些观众问我是如何操作这么快.当然这里没有唯一的答案,答案是一堆简单的快捷键和大量的实践的组合.为了回应那些询问,我觉得有必要看看我每天想都不用想且使用的快捷键. ...

  7. trove 开发者阅读翻译

    介绍 Trove为OpenStack提供数据库的服务.它的设计运行完全符合OpenStack,目标是让用户能快速.轻松地利用关系数据库的特点,没有负担的处理复杂的管理任务.云用户和数据库管理员可以根据 ...

  8. Linux网络常用头文件说明

    sys/types.h:数据类型定义 sys/socket.h:提供socket函数及数据结构 netinet/in.h:定义数据结构sockaddr_in arpa/inet.h:提供IP地址转换函 ...

  9. python新手 实践操作 作业

    #有如下值集合 [11,22,33,44,55,66,77,88,99],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.即: {'k1': 大于66的所 ...

  10. ipv4属性无法打开

    设置开机启动项: 点击左下角开始或windows+R-->msconfig 打开组策略:Windows+R-->输入gpedit.msc ipv4属性打不开  经过查看组策略什么未配置  ...