Oracle BBED单个数据文件跳过所有归档恢复
场景描述:
数据库利用备份进行恢复时,需要执行restore+recover,restore利用备份片恢复数据文件,recover是进行归档日志应用到最新状态,当我们所有归档日志丢失时,可以利用bbed跳过所有的归档日志,将数据库open起来,在生产环境中bbed是极其危险的操作,谨慎使用,本次测试是单个数据文件跳过所有归档日志。
环境构建:
SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/app/product/11.2.0/db_1/dbs/arch
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10SQL> create tablespace test_bbed datafile '/oracle/app/oradata/prod/bbed01.dbf' size 50M;
Tablespace created.SQL> create table t1 tablespace test_bbed as select * from dba_objects;
Table created.SQL> insert into t1 select * from t1;
86957 rows created.SQL> commit;
Commit complete.RMAN> backup datafile 6 format '/home/oracle/backup/datafile6_%U';
Starting backup at 31-JUL-20
using target database control file instead of recovery catalog
allocated channel: ORA_DISK_1
channel ORA_DISK_1: SID=70 device type=DISK
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=/oracle/app/oradata/prod/bbed01.dbf
channel ORA_DISK_1: starting piece 1 at 31-JUL-20
channel ORA_DISK_1: finished piece 1 at 31-JUL-20
piece handle=/home/oracle/backup/datafile8_01v6n1e7_1_1 tag=TAG20200731T181951 comment=NONE
channel ORA_DISK_1: backup set complete, elapsed time: 00:00:01
Finished backup at 31-JUL-20SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/app/product/11.2.0/db_1/dbs/arch
Oldest online log sequence 8
Next log sequence to archive 10
Current log sequence 10多次切换日志:
再次查看SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination /oracle/app/product/11.2.0/db_1/dbs/arch
Oldest online log sequence 15
Next log sequence to archive 17
Current log sequence 17删除归档14 15:(也可以全部删除,因为我们是跳过所有归档进行恢复)
rm -rf arch1_14_1046156085.dbf arch1_15_1046156085.dbf 删除数据文件
[oracle@server1 prod]$ mv bbed01.dbf /tmp/SQL> alter system flush buffer_cache;
System altered.SQL> select count(*) from t1;
select count(*) from t1*
ERROR at line 1:
ORA-01116: error in opening database file 8
ORA-01110: data file 8: '/oracle/app/oradata/prod/bbed01.dbf'
ORA-27041: unable to open file
Linux-x86_64 Error: 2: No such file or directory
Additional information:3
开始恢复:
RMAN> restore datafile 6;RMAN> recover datafile 6;Starting recover at 08-OCT-20
using channel ORA_DISK_1starting media recoveryarchived log for thread 1 with sequence 10 is already on disk as file /oracle/app/product/11.2.0/db_1/dbs/arch1_10_1046156085.dbf
archived log for thread 1 with sequence 11 is already on disk as file /oracle/app/product/11.2.0/db_1/dbs/arch1_11_1046156085.dbf
archived log for thread 1 with sequence 12 is already on disk as file /oracle/app/product/11.2.0/db_1/dbs/arch1_12_1046156085.dbf
archived log for thread 1 with sequence 13 is already on disk as file /oracle/app/product/11.2.0/db_1/dbs/arch1_13_1046156085.dbf
archived log for thread 1 with sequence 16 is already on disk as file /oracle/app/product/11.2.0/db_1/dbs/arch1_16_1046156085.dbf
RMAN-00571: ===========================================================
RMAN-00569: =============== ERROR MESSAGE STACK FOLLOWS ===============
RMAN-00571: ===========================================================
RMAN-03002: failure of recover command at 10/08/2020 23:40:44
RMAN-06053: unable to perform media recovery because of missing log
RMAN-06025: no backup of archived log for thread 1 with sequence 15 and starting SCN of 1115761 found to restore
RMAN-06025: no backup of archived log for thread 1 with sequence 14 and starting SCN of 1115758 found to restore这里只是归档断档,我不想后续继续应用16号归档,跳过所有归档日志。
查看SCN信息:
SQL> select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
---------- ------------------1 11157692 11157693 11157694 11157695 11157696 11157326 rows selected.SQL> select file#,checkpoint_change#,last_change# from v$datafile;FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------1 11157692 11157693 11157694 11157695 11157696 11157696号数据文件 SCN1115732 -> 1115769 直接推进到与其他数据文件一致
bbed有关一致性的偏移量介绍:
(1)kscnbas (at offset 484) - SCN of last change to the datafile. (2)kcvcptim (at offset 492) -Time of the last change to the datafile. (3)kcvfhcpc (at offset 140) - Checkpoint count. (4)kcvfhccc (at offset 148) - Unknown, but is always 1 less than thecheckpoint point count. Oracle有4个属性来判断datafile 是否和其他的datafile 一致,如果都一致,可以正常操作,如果不一致,那么会报ORA-01113错误。
所以这里我们不仅修改484,我们还要修改492 140 148.
我们将6号文件的484 492 140 148全部修改与1号文件一致
bbed连接1号文件进行查看1号文件信息:
BBED> set filename '/oracle/app/oradata/prod/system01.dbf'BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484 struct kcvcpscn, 8 bytes @484 ub4 kscnbas @484 0x00110679ub2 kscnwrp @488 0x0000ub4 kcvcptim @492 0x3ec81979ub2 kcvcpthr @496 0x0001union u, 12 bytes @500 struct kcvcprba, 12 bytes @500 ub4 kcrbaseq @500 0x00000011ub4 kcrbabno @504 0x00000002ub2 kcrbabof @508 0x0010ub1 kcvcpetb[0] @512 0x02ub1 kcvcpetb[1] @513 0x00ub1 kcvcpetb[2] @514 0x00ub1 kcvcpetb[3] @515 0x00ub1 kcvcpetb[4] @516 0x00ub1 kcvcpetb[5] @517 0x00ub1 kcvcpetb[6] @518 0x00ub1 kcvcpetb[7] @519 0x00BBED> p kcvfhcpc
ub4 kcvfhcpc @140 0x00000074BBED> p kcvfhccc
ub4 kcvfhccc @148 0x000000731号文件实际存储的值为:484 0x00110679 -> 79061100492 0x3ec81979-> 7919c83e140 0x00000074-> 74000000148 0x00000073 -> 73000000
bbed连接目标6号文件,进行修改:
BBED> set filename '/oracle/app/oradata/prod/bbed01.dbf'FILENAME /oracle/app/oradata/prod/bbed01.dbfBBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484 struct kcvcpscn, 8 bytes @484 ub4 kscnbas @484 0x00110654ub2 kscnwrp @488 0x0000ub4 kcvcptim @492 0x3ec8194cub2 kcvcpthr @496 0x0001union u, 12 bytes @500 struct kcvcprba, 12 bytes @500 ub4 kcrbaseq @500 0x0000000aub4 kcrbabno @504 0x0000a894ub2 kcrbabof @508 0x0010ub1 kcvcpetb[0] @512 0x02ub1 kcvcpetb[1] @513 0x00ub1 kcvcpetb[2] @514 0x00ub1 kcvcpetb[3] @515 0x00ub1 kcvcpetb[4] @516 0x00ub1 kcvcpetb[5] @517 0x00ub1 kcvcpetb[6] @518 0x00ub1 kcvcpetb[7] @519 0x00现将6号数据文件偏移量484 492 500 140 148全部修改与1号文件一致BBED> modify /x 79061100 offset 484
BBED> modify /x 7919c83e offset 492
BBED> modify /x 74000000 offset 140
BBED> modify /x 73000000 offset 148修改后:
BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484 struct kcvcpscn, 8 bytes @484 ub4 kscnbas @484 0x00110679ub2 kscnwrp @488 0x0000ub4 kcvcptim @492 0x3ec81979ub2 kcvcpthr @496 0x0001union u, 12 bytes @500 struct kcvcprba, 12 bytes @500 ub4 kcrbaseq @500 0x0000000aub4 kcrbabno @504 0x0000a894ub2 kcrbabof @508 0x0010ub1 kcvcpetb[0] @512 0x02ub1 kcvcpetb[1] @513 0x00ub1 kcvcpetb[2] @514 0x00ub1 kcvcpetb[3] @515 0x00ub1 kcvcpetb[4] @516 0x00ub1 kcvcpetb[5] @517 0x00ub1 kcvcpetb[6] @518 0x00ub1 kcvcpetb[7] @519 0x00BBED> p kcvfhcpc
ub4 kcvfhcpc @140 0x00000074BBED> p kcvfhccc
ub4 kcvfhccc @148 0x00000073BBED> sum apply
Check value for File 0, Block 1:
current = 0xab75, required = 0xab75
再次查看SCN信息:
SQL> select file#,checkpoint_change# from v$datafile_header;FILE# CHECKPOINT_CHANGE#
---------- ------------------1 11157692 11157693 11157694 11157695 11157696 11157696 rows selected.SQL> select file#,checkpoint_change#,last_change# from v$datafile;FILE# CHECKPOINT_CHANGE# LAST_CHANGE#
---------- ------------------ ------------1 11157692 11157693 11157694 11157695 11157696 1115769
尝试open打开数据库:
SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01122: database file 6 failed verification check
ORA-01110: data file 6: '/oracle/app/oradata/prod/bbed01.dbf'
ORA-01207: file is more recent than control file - old control file重建控制文件:
SQL> alter database backup controlfile to trace as '/home/oracle/ctl.txt';
Database altered.[oracle@server1 ~]$ vim ctl.sql
STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "PROD" NORESETLOGS ARCHIVELOGMAXLOGFILES 16MAXLOGMEMBERS 3MAXDATAFILES 100MAXINSTANCES 8MAXLOGHISTORY 292
LOGFILEGROUP 1 '/oracle/app/oradata/prod/redo01.log' SIZE 50M BLOCKSIZE 512,GROUP 2 '/oracle/app/oradata/prod/redo02.log' SIZE 50M BLOCKSIZE 512,GROUP 3 '/oracle/app/oradata/prod/redo03.log' SIZE 50M BLOCKSIZE 512
-- STANDBY LOGFILE
DATAFILE'/oracle/app/oradata/prod/system01.dbf','/oracle/app/oradata/prod/sysaux01.dbf','/oracle/app/oradata/prod/undotbs01.dbf','/oracle/app/oradata/prod/users01.dbf','/oracle/app/oradata/prod/example01.dbf','/oracle/app/oradata/prod/bbed01.dbf'
CHARACTER SET ZHS16GBKSQL> shutdown immediate;
SQL> @ctl.sql
Control file created.SQL> alter database open;
alter database open
*
ERROR at line 1:
ORA-01113: file 1 needs media recovery
ORA-01110: data file 1: '/oracle/app/oradata/prod/system01.dbf'SQL> recover database;
Media recovery complete.
SQL> alter database open;
Database altered.数据库成功启动。
SQL> select count(*) from t1;COUNT(*)
----------173914
恢复成功
本次修改了offset 484 492 140 148
其他有关bbed的案例:
Oracle BBED工具介绍与安装
Oracle BBED利用copy命令恢复已删除的记录
Oracle BBED修改数据块进而修改数据
Oracle BBED全库跳过丢失的归档继续恢复
Oracle BBED单个数据文件跳过丢失的归档继续恢复
Oracle BBED单个数据文件跳过所有归档恢复
Oracle BBED将offline的数据文件改为online案例
Oracle BBED单个数据文件跳过所有归档恢复相关推荐
- oracle数据库单个数据文件的大小限制
之前没有仔细想过这个问题,因为总是不会用到,也没有犯过类似错误. 顺便提一下学习方法吧. 卤肉的学习方法是:常用知识点,熟悉理论并反复做实验,深入理解:不常用的知识点,相关内容都了解大概,遇到问题时想 ...
- BBED修改数据文件的SCN
BBED修改数据文件的SCN 1.编译BBED make: *** No rule to make target `ins_rdbms.mk'. Stop. [oracle@linux2 oracle ...
- oracle表空间文件离线,oracle 表空间 数据文件 笔记
数据文件命令 Enabling and Disabling Automatic Extension for a Datafile: ALTER TABLESPACE users ADD DATAFIL ...
- oracle 磁盘不分区吗,LINUX停ORACLE软件、数据文件等所在的磁盘分区空间不足的解决思路...
LINUX下ORACLE软件.数据文件等所在的磁盘分区空间不足的解决思路 虚拟机中的ORACLE运行的久了,归档.数据文件不断增长,原来安装ORACLE的分区空间不足. 此时可以重新向虚拟机增加一块硬 ...
- oracle表独立数据文件,oracle表空间及数据文件
1. Oracle 的逻辑结构 数据库的物理结构是由数据库的操作系统文件所决定,每一个 Oracle 数据库是由三种类型的文件组成:数据文件.日志文件和控制文件.数据库的文件为数据库信息提供真正的物理 ...
- oracle 文件大小为零,windows Oracle数据文件大小为0的恢复case
本站文章除注明转载外,均为本站原创: 转载自love wife love life -Roger 的Oracle技术博客 本文链接地址: windows Oracle数据文件大小为0的恢复case 一 ...
- oracle 表空间的数据文件丢失或损坏的恢复
表空间的数据文件丢失或损坏的恢复 select ts#,file#,name from v$datafile; 查看表空间和编号 删除一个表空间文件 此时关闭数据库 再开启时发现系统提醒缺少文件 使用 ...
- Oracle单个数据文件超过32G后需要扩容
表空间数据文件容量与DB_BLOCK_SIZE的设置有关,而这个参数在创建数据库实例的时候就已经指定.DB_BLOCK_SIZE参数可以设置为4K.8K.16K.32K.64K等几种,Oracle的物 ...
- oracle 如何添加数据文件,Oracle教程 误添加数据文件删除方法
如果是在Oracle10g之前,删除一个表空间中的数据文件后,其文件在数据库数据字典中会仍然存在,除非你删除表空间,否则文件信息不会清除. 但是从Oracle10gR2开始,Oracle允许我们彻底删 ...
最新文章
- python scrapy 抓取脚本之家文章(scrapy 入门使用简介)
- dosubmit 成功不成功_供卵试管不成功的原因是什么?一般几次成功?
- 锁相放大器sr830_各位谁会用Stanford SR830啊,我都快被这个锁相放大器折腾死了!!!!-北京搜狐焦点...
- 阿里大数据中台12年建设经验的精华总结!一次性说清!
- appcrash事件怎么解决_突发事件中身心容易紧张焦虑,该如何控制心理压力与情绪?...
- Python之数据分析(Numpy数据可视化:等高线图、热力图、饼图)
- 【机房收费系统C#版】——导出Excel
- QQ空间过滤器 更新记录 (最新版本 2.3)
- 信鸽推送接收通知点击打开相应Activity
- matlab 画三维图像
- 阅读“变形计”:一场偶然与非偶然的相遇
- day4-反爬和正则
- 第一章 【数据分析师---数据可视化1】 matplotlib 静态图,无互动
- POJ 2503 Babelfish(map)
- ZONe Energy Programming Contest E - Sneaking (最短路)
- python解常微分方程龙格库_数值常微分方程-欧拉法与龙格-库塔法
- mac book 华为C8815不能debug
- 数据预处理之scaling
- 用Python批量下载DACC的MODIS数据
- 计算机一级扫描件,学院年终科研成果统计提交成果扫描件要求