5 使用BBED跳过归档

在归档模式下,缺失了一部分的归档日志文件,对数据文件进行恢复

1 开启归档

--shutdown immediate
--startup mount
--alter database archivelog
--alter database open
SYS@ orcl >archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /u01/app/oracle/arch
Oldest online log sequence 258
Next log sequence to archive 260
Current log sequence 260

2 插入测试数据

conn test/test
create table t1 (id int,name varchar2(10),date1 date default sysdate);
insert into t1(id,name) values(1,'AAAAA');
insert into t1(id,name) values(2,'bbbbb');
commit;
SYS@ orcl >/
ID NAME DATE1
---------- -------------------------------------------------- ---------
1 AAAAA 22-MAY-19
2 bbbbb 22-MAY-19
SYS@ orcl >select * from v$dbfile; FILE# NAME
---------- --------------------------------------------------
5 /u01/app/oracle/oradata/orcl/test01.dbf
4 /u01/app/oracle/oradata/orcl/users01.dbf
3 /u01/app/oracle/oradata/orcl/undotbs01.dbf
2 /u01/app/oracle/oradata/orcl/sysaux01.dbf
1 /u01/app/oracle/oradata/orcl/system01.dbf

3 备份数据文件5

[oracle@DSI ~]$ rman target/
RMAN> backup datafile 5 format '/home/oracle/backup/datafile5_%U';

查看归档

SYS@ orcl >select sequence#,status from v$archived_log order by 1 desc;
SEQUENCE# S
---------- -
259 A
258 A
257 A
SYS@ orcl >alter system switch logfile; SYS@ orcl >select sequence#,status from v$archived_log order by 1 desc;
SEQUENCE# S
---------- -
267 A
266 A
265 A
264 A
263 A
262 A
261 A
260 A
259 A
258 A
257 A

4 删除一部分归档日志

[oracle@DSI arch]$ rm 1_264_1006250831.dbf 1_265_1006250831.dbf

SYS@ orcl >select * from v$dbfile;
FILE# NAME
---------- --------------------------------------------------
5 /u01/app/oracle/oradata/orcl/test01.dbf
4 /u01/app/oracle/oradata/orcl/users01.dbf
3 /u01/app/oracle/oradata/orcl/undotbs01.dbf
2 /u01/app/oracle/oradata/orcl/sysaux01.dbf
1 /u01/app/oracle/oradata/orcl/system01.dbf
SYS@ orcl >select file#,CREATION_CHANGE#,CHECKPOINT_CHANGE# ,UNRECOVERABLE_CHANGE#,LAST_CHANGE#,OFFLINE_CHANGE#,STATUS from v$datafile order by 1;
FILE# CREATION_CHANGE# CHECKPOINT_CHANGE# UNRECOVERABLE_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------- ---------------- ------------------ --------------------- ------------ --------------- -------
1 7 9293148 0 0 SYSTEM
2 1799 9293148 0 0 ONLINE
3 2821 9293148 0 0 ONLINE
4 15940 9293148 0 0 ONLINE
5 929531 9293148 0 0 ONLINE
archivelog模式下,当数据文件offline时,其对应的数据文件头stop scn会更新,同时controlfile中该datafile 的stop
scn信息也会更新.此时也会更新offline scn,并且offline scn等于stop scn.
SYS@ orcl >alter database datafile 5 offline;
Database altered.
SYS@ orcl >select file#,CREATION_CHANGE#,CHECKPOINT_CHANGE# ,UNRECOVERABLE_CHANGE#,LAST_CHANGE#,OFFLINE_CHANGE#,STATUS from v$datafile order by 1; FILE# CREATION_CHANGE# CHECKPOINT_CHANGE# UNRECOVERABLE_CHANGE# LAST_CHANGE# OFFLINE_CHANGE# STATUS
---------- ---------------- ------------------ --------------------- ------------ --------------- -------
1 7 9293148 0 0 SYSTEM
2 1799 9293148 0 0 ONLINE
3 2821 9293148 0 0 ONLINE
4 15940 9293148 0 0 ONLINE
5 929531 9293148 0 9293224 0 RECOVER

对5号文件进行还原

RMAN> restore datafile 5;

Starting restore at 22-MAY-19
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=143 device type=DISK 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 00005 to /u01/app/oracle/oradata/orcl/test01.dbf
channel ORA_DISK_1: reading from backup piece /home/oracle/backup/datafile5_0iu26hqq_1_1
channel ORA_DISK_1: piece handle=/home/oracle/backup/datafile5_0iu26hqq_1_1 tag=TAG20190522T142946
channel ORA_DISK_1: restored backup piece 1
channel ORA_DISK_1: restore complete, elapsed time: 00:00:01
Finished restore at 22-MAY-19

5号数据文件无法被Online,提示需要介质恢复

SYS@ orcl >alter database datafile 5 online;
alter database datafile 5 online
*
ERROR at line 1:
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: '/u01/app/oracle/oradata/orcl/test01.dbf'

对5号文件进行恢复,提示缺少归档日志文件

RMAN> recover datafile 5;

Starting recover at 22-MAY-19
using channel ORA_DISK_1 starting media recovery archived log for thread 1 with sequence 260 is already on disk as file /u01/app/oracle/arch/1_260_1006250831.dbf
archived log for thread 1 with sequence 261 is already on disk as file /u01/app/oracle/arch/1_261_1006250831.dbf
archived log for thread 1 with sequence 262 is already on disk as file /u01/app/oracle/arch/1_262_1006250831.dbf
archived log for thread 1 with sequence 263 is already on disk as file /u01/app/oracle/arch/1_263_1006250831.dbf
archived log for thread 1 with sequence 266 is already on disk as file /u01/app/oracle/arch/1_266_1006250831.dbf
archived log for thread 1 with sequence 267 is already on disk as file /u01/app/oracle/arch/1_267_1006250831.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 05/22/2019 14:39:05
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of archived log for thread 1 with sequence 265 and starting SCN of 9293139 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 264 and starting SCN of 9293136 found to restore
恢复数据文件时,发现归档丢失了:265,264

Data File Header Dump

SYS@ orcl >alter session set events 'immediate trace name file_hdrs level 10';
Session altered.
SYS@ orcl >select * from v$diag_info; DATA FILE #5:
name #4: /u01/app/oracle/oradata/orcl/test01.dbf
creation size=0 block size=8192 status=0x1c head=4 tail=4 dup=1
tablespace 5, index=5 krfil=5 prev_file=0
unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00
Checkpoint cnt:222 scn: 0x0000.008dcd5c 05/22/2019 14:33:12
Stop scn: 0x0000.008dcda8 05/22/2019 14:36:29 ---正常的应该是Stop scn: 0xffff.ffffffff 05/22/2019 11:22:17
Creation Checkpointed at scn: 0x0000.000e2efb 04/22/2019 17:12:12
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Offline scn: 0x0000.00000000 prev_range: 0
Online Checkpointed at scn: 0x0000.00000000
thread:0 rba:(0x0.0.0)
enabled threads: 00000000 00000000 00000000 00000000 00000000 00000000 Hot Backup end marker scn: 0x0000.00000000
aux_file is NOT DEFINED
Plugged readony: NO
Plugin scnscn: 0x0000.00000000
Plugin resetlogs scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign creation scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Foreign checkpoint scn/timescn: 0x0000.00000000 01/01/1988 00:00:00
Online move state: 0
V10 STYLE FILE HEADER:
Compatibility Vsn = 186647552=0xb200400
Db ID=1534031567=0x5b6f76cf, Db Name='ORCL'
Activation ID=0=0x0
Control Seq=8283=0x205b, File size=64000=0xfa00
File Number=5, Blksiz=8192, File Type=3 DATA
Tablespace #5 - TEST rel_fn:5
Creation at scn: 0x0000.000e2efb 04/22/2019 17:12:12
Backup taken at scn: 0x0000.00000000 01/01/1988 00:00:00 thread:0
reset logs count:0x3bfa2b4f scn: 0x0000.00000001
prev reset logs count:0x0 scn: 0x0000.00000000
recovered at 05/22/2019 14:39:05
status:0x0 root dba:0x00400208 chkpt cnt: 217 ctl cnt:216
begin-hot-backup file size: 0
Checkpointed at scn: 0x0000.008dccf8 05/22/2019 14:29:46
thread:1 rba:(0x104.99bb.10)
enabled threads: 01000000 00000000 00000000 00000000 00000000 00000000

内部介质恢复机制
正常情况下,Oracle不允许跳过归档加载文件

SYS@ orcl >select to_char(SEQUENCE#,'xxxxxxxxxxxxxxxxxx'),to_char(FIRST_CHANGE#,'xxxxxxxxxxxxxxxxxxxxxxxx') from v$archived_log where sequence#=266;

TO_CHAR(SEQUENCE#,' TO_CHAR(FIRST_CHANGE#,'XX
------------------- -------------------------
10a 8dcd56

更改到5号文件的文件头

BBED修改文件头检查点SCN
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 0x008dccf8
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3c23475a
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x00000104
ub4 kcrbabno @504 0x000099bb
ub2 kcrbabof @508 0x0010
BBED> modify /x 56cd8d00 offset 484
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 1 Offsets: 484 to 995 Dba:0x01400001
------------------------------------------------------------------------
56cd8d00 00000000 5a47233c 01000000 04010000 bb990000 10000000 02000000
BBED修改文件头检查点RBA
SYS@ orcl >select * from v$lock;
ADDR KADDR SID TY ID1 ID2 LMODE REQUEST CTIME BLOCK
---------------- ---------------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------
000000008DD8ECC8 000000008DD8ED20 5 MR 202 0 4 0 3763 0
000000008DD8E3F0 000000008DD8E448 5 MR 4 0 4 0 3763 0
000000008DD8E690 000000008DD8E6E8 5 MR 3 0 4 0 3763 0
000000008DD8E930 000000008DD8E988 5 MR 1 0 4 0 3763 0
000000008DD8EA10 000000008DD8EA68 5 MR 2 0 4 0 3763 0
000000008DD8EBD0 000000008DD8EC28 5 MR 201 0 4 0 3763 0
000000008DD8F048 000000008DD8F0A0 5 PW 1 0 3 0 3762 0
BBED> dump /v offset 484 count 32
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 1 Offsets: 484 to 515 Dba:0x01400001
-------------------------------------------------------
56cd8d00 00000000 5a47233c 01000000 l
04010000 bb990000 10000000 02000000 l
BBED> dump /v offset 500
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 1 Offsets: 500 to 531 Dba:0x01400001
-------------------------------------------------------
04010000 bb990000 10000000 02000000 l
BBED> modify /x 0a01 offset 500
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 1 Offsets: 500 to 531 Dba:0x01400001
------------------------------------------------------------------------
0a010000 bb990000 10000000 02000000 00000000 00000000 00000000 00000000 <32 bytes per line> BBED> sum apply
Check value for File 5, Block 1:
current = 0x50fb, required = 0x50fb

数据恢复

SYS@ orcl >recover datafile 5;
Media recovery complete.
SYS@ orcl >alter database datafile 5 online; Database altered. SYS@ orcl >select * from test.t1; ID NAME DATE1
---------- -------------------------------------------------- ---------
1 AAAAA 22-MAY-19
2 bbbbb 22-MAY-19 BBED> exit
BBED> set file 5 block 1
BBED> map /v
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x008dd509
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x3c2355c6
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0000010c
ub4 kcrbabno @504 0x00000d2a
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[] @512 0x02

介质恢复总结
备份数据 --冷备,热备,cp,rman等
归档日志 --scn,rba
数据文件
检查点
介质恢复
这种方法是不得已采取的非常规手段,通常Oracle官方不被支持。跳过的归档日志中
涵盖了大量的事务,打开库后那么数据将不可避免出现不一致的问题!!!

-------
--v$recover_file
select file#,online_status "STATUS",to_char(change#,'') "SCN",
To_char(time,'yyyy-mm-dd hh24:mi:ss')"TIME" from v$recover_file; --v$datafile
set lines 160
col name for a50
select ts#,file#,BYTES/1024/1024/1024,status,enabled,
to_char(checkpoint_change#,'') "SCN",
to_char(last_change#,'')"STOP_SCN",
name from v$datafile; --v$datafile_header
set linesize 150
select ts#,file#,TABLESPACE_NAME,status,
to_char(CREATION_TIME,'yyyy-mm-dd hh24:mi:ss') CREATE_TIME,
to_char(checkpoint_change#,'') "SCN",
to_char(RESETLOGS_CHANGE#,'') "RESETLOGS SCN",FUZZY
from v$datafile_header; select hxfil FILENUMBER, fhsta STATUS, fhscn SCN, fhrba_seq SEQUENCE from x$kcvfh; --v$backup begin backup
select file#,to_char(CHANGE#,'') "SCN",
to_char(TIME,'yyyy-mm-dd hh24:mi:ss') "TIME" from v$backup;
---------

05 使用bbed跳过归档恢复数据文件的更多相关文章

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

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

  2. BBED跳过归档

    通过BBED 跳过归档,以当前数据库 8号文件为例: SQL; FILE# NAME ---------- ---------------------------------------------- ...

  3. 【Oracle】非RMAN恢复数据文件、控制文件

    实验环境:OEL 5.6 oracle 11g(11.2.0.4.0) 注意: system表空间数据文件不能在线recover,需要启动到mount状态再recover: undo表空间数据文件可以 ...

  4. oracle直通车6关于rman备份恢复数据文件,以及创建分区表的实验

    1.创建一张表,在表上创建一个索引,分别查询表,索引各自分配了多少个extents,多少个数据块以及总共占用空间的大小(bytes). 答:创建一张表t,为字段object_id创建索引t_objec ...

  5. rman备份跳过read only数据文件,减少备份总量,加快备份时间

    客户需求,RMAN备份时间过长,想缩短备份时间,优化备份. 客户基于表空间进行历史数据归档的方式,将历史的表空间进行read only,想让RMAN跳过只读表空间,减少RMAN备份的数据总量,从而缩短 ...

  6. RMAN恢复数据文件

    实验之前先备份数据库 RMAN>backup database; 在操作系统中删除数据文件 5 SQL> startup ORACLE 例程已经启动. Total System Globa ...

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

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

  8. RMAN数据库恢复之恢复表空间和数据文件

    执行表空间或数据文件恢复时,数据库既可以是MOUNT状态,也可以是OPEN状态.1.恢复表空间在执行恢复之前,如果被操作的表空间未处理OFFLINE状态,必须首先通过ALTER TABLESPACE… ...

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

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

随机推荐

  1. 你不知道的props和state

    State 与 Props 区别props 是组件对外的接口,state 是组件对内的接口.组件内可以引用其他组件,组件之间的引用形成了一个树状结构(组件树),如果下层组件需要使用上层组件的数据或方法 ...

  2. 31. Next Permutation (JAVA)

    Implement next permutation, which rearranges numbers into the lexicographically next greater permuta ...

  3. rest_framework框架的版本

    REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer','rest_framewo ...

  4. Zabbix--01 介绍及安装

    目录 一. 监控知识基本概述 1.为什么要使用监控 2.如何进行监控,比如我们需要监控磁盘的使用率 3.流行的监控工具 4.如果去到一家新公司,如何入手监控 二. 单机时代如何监控 三. zabbix ...

  5. 03python面向对象编程2

    3.继承 如果你要编写的类是另一个现成类的特殊版本,可使用继承.一个类继承另一个类时,它将自动获得另一个类的所有属性和方法:原有的类称为父类,而新类称为子类.子类继承了其父类的所有属性和方法,同时还可 ...

  6. gradle配置国内阿里云镜像

    对单个项目生效,在项目中的build.gradle修改内容 buildscript { repositories { maven { url 'http://maven.aliyun.com/nexu ...

  7. Thymeleaf 模板引擎简介

    目录 Thymeleaf 模板引擎 官方文档下载 Hello World 新建应用 后台控制器 前端页面 浏览器访问测试 Thymeleaf 模板引擎1.Thymeleaf 是 Web 和独立环境的现 ...

  8. Java动手动脑02

    一.平方数静方法: public class SquareInt { public static void main(String[] args) { int result; for (int x = ...

  9. java:在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作

    在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作 //在Conllection接口中实际上也规定了两个可以将集合变成对象数组的操作 List<String> a ...

  10. 运行biggan demo

    http://www.zhuanzhi.ai/document/8705953a704e1bf8e051c161d1587d88