文档章节

分享:bbed修改数据文件头推进scn与其他数据文件相同

科技创造
 科技创造
发布于 2015/06/18 16:52
字数 2018
阅读 216
收藏 0
点赞 0
评论 0

场景简介:

         物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据文件不一致。

场景构造:

1、  创建测试表空间

SYS@orser> create tablespace bbed datafile '/u01/app/oracle/oradata/orser/bbed01.dbf' size 10M autoextend on;

 

Tablespace created

2、  物理cp数据文件(最好先做备份)

[oracle@orser orser]$ cp bbed01.dbf bbed01.dbf.bak

3、  数据库发生检查点这

SYS@orser> alter system checkpoint;

 

System altered.

4、  删除数据文件

[oracle@orser orser]$ rm -rf bbed01.dbf

5、  cp之间备份的数据文件

[oracle@orser orser]$ cp bbed01.dbf.bak bbed01.dbf

6、  一致性关闭数据库报错

SYS@orser> shutdown immediate

ORA-01122: database file 7 failed verification check

ORA-01110: data file 7: '/u01/app/oracle/oradata/orser/bbed01.dbf'

ORA-01208: data file is an old version - not accessing current version

解决方案:

         查询各个数据文件头scn,该数据文件头scn会低于其他数据文件scn,使用bbed修改数据文件头中的scn使该文件头scn与其他文件相同。

解决方法:

1、  数据库启动到mount状态

SYS@orser> startup mount

ORACLE instance started.

 

Total System Global Area  640286720 bytes

Fixed Size                  1346840 bytes

Variable Size             566231784 bytes

Database Buffers           67108864 bytes

Redo Buffers                5599232 bytes

Database mounted.

2、  查看各个数据文件的scn

SYS@orser> select file#,checkpoint_change#,name from v$datafile_header;

 

     FILE# CHECKPOINT_CHANGE# NAME

---------- ------------------ --------------------------------------------------

         1            5206894 /u01/app/oracle/oradata/orser/system01.dbf

         2            5206894 /u01/app/oracle/oradata/orser/sysaux01.dbf

         3            5206894 /u01/app/oracle/oradata/orser/undotbs01.dbf

         4            5206894 /u01/app/oracle/oradata/orser/users01.dbf

         5            5206894 /u01/app/oracle/oradata/orser/index01.dbf

         6            5206894 /u01/app/oracle/oradata/orser/orser01.dbf

         7            5205966 /u01/app/oracle/oradata/orser/bbed01.dbf

         9            5206894 /u01/app/oracle/oradata/orser/iot01.dbf

        10            5206894 /u01/app/oracle/oradata/orser/example01.dbf

 

9 rows selected.

可以看出bbed01数据文件头scn要小于其他数据文件头scn所以现在无法启动数据库。

3、  更新bbedlistfile文件

可以通过 select file#,name,bytes from v$datafile; 获取listfile信息

[oracle@orser lib]$ vim filelist.txt

1  /u01/app/oracle/oradata/orser/system01.dbf          786432000

2  /u01/app/oracle/oradata/orser/sysaux01.dbf          796917760

3  /u01/app/oracle/oradata/orser/undotbs01.dbf         791674880

4  /u01/app/oracle/oradata/orser/users01.dbf             5242880

5  /u01/app/oracle/oradata/orser/index01.dbf            52428800

6  /u01/app/oracle/oradata/orser/orser01.dbf           209715200

7  /u01/app/oracle/oradata/orser/bbed01.dbf             10485760

9  /u01/app/oracle/oradata/orser/iot01.dbf             104857600
10 /u01/app/oracle/oradata/orser/example01.dbf         104857600

4、  bbed查询bbed01数据文件结构信息

BBED> set dba 7,1

        DBA             0x01c00001 (29360129 7,1)

BBED> map     

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                                     Dba:0x01c00001

------------------------------------------------------------

 Data File Header

 

 struct kcvfh, 860 bytes                        @0      

 

         ub4 tailchk                                @8188

 

 

5、  Bbed查看kcvfh信息

BBED> p kcvfh

struct kcvfh, 860 bytes                     @0      

   ……………………………………………省略部分信息………………………………………………

(KCVFHOFZ)

   struct kcvfhckp, 36 bytes                @484    

      struct kcvcpscn, 8 bytes              @484    

         ub4 kscnbas                        @484      0x004f6fce

         ub2 kscnwrp                        @488      0x0000

      ub4 kcvcptim                          @492      0x32c5916c

      ub2 kcvcpthr                          @496      0x0001

      union u, 12 bytes                     @500    

         struct kcvcprba, 12 bytes          @500    

            ub4 kcrbaseq                    @500      0x00000093

            ub4 kcrbabno                    @504      0x00000045

            ub2 kcrbabof                    @508      0x0010

      ub1 kcvcpetb[0]                       @512      0x02

      ub1 kcvcpetb[1]                       @513      0x00

      ub1 kcvcpetb[2]                       @514      0x00

      ub1 kcvcpetb[3]                       @515      0x00

      ub1 kcvcpetb[4]                       @516      0x00

      ub1 kcvcpetb[5]                       @517      0x00

      ub1 kcvcpetb[6]                       @518      0x00

      ub1 kcvcpetb[7]                       @519      0x00

   ub4 kcvfhcpc                             @140      0x00000004

   ub4 kcvfhrts                             @144      0x00000000

   ub4 kcvfhccc                             @148      0x00000003

   struct kcvfhbcp, 36 bytes                @152    

      struct kcvcpscn, 8 bytes              @152    

         ub4 kscnbas                        @152      0x00000000

         ub2 kscnwrp                        @156      0x0000

      ub4 kcvcptim                          @160      0x00000000

      ub2 kcvcpthr                          @164      0x0000

      …………………………………省略部分信息………………………………………..

   struct kcvfhprs, 8 bytes                 @420    

      ub4 kscnbas                           @420      0x003a40e3

      ub2 kscnwrp                           @424      0x0000

   struct kcvfhprfs, 8 bytes                @428    

      ub4 kscnbas                           @428      0x00000000

      ub2 kscnwrp                           @432      0x0000

   ub4 kcvfhtrt                             @444      0x00000000

6、  bbed查看其他正常数据文件头kcvfh信息

 

BBED> set dba 1,1

        DBA             0x00400001 (4194305 1,1)

 

BBED> map

 File: /u01/app/oracle/oradata/orser/system01.dbf (1)

 Block: 1                                     Dba:0x00400001

------------------------------------------------------------

 Data File Header

 

 struct kcvfh, 860 bytes                      @0      

 ub4 tailchk                                @8188   

 

 

BBED> p kcvfh

struct kcvfh, 860 bytes                     @0      

    ……………………………………………省略部分信息………………………………………………

(KCVFHOFZ)

   struct kcvfhckp, 36 bytes                @484    

      struct kcvcpscn, 8 bytes              @484    

         ub4 kscnbas                        @484      0x004f736e

         ub2 kscnwrp                        @488      0x0000

      ub4 kcvcptim                          @492      0x32c59266

      ub2 kcvcpthr                          @496      0x0001

      union u, 12 bytes                     @500    

         struct kcvcprba, 12 bytes          @500    

            ub4 kcrbaseq                    @500      0x00000097

            ub4 kcrbabno                    @504      0x00000002

            ub2 kcrbabof                    @508      0x0010

      ub1 kcvcpetb[0]                       @512      0x02

      ub1 kcvcpetb[1]                       @513      0x00

      ub1 kcvcpetb[2]                       @514      0x00

      ub1 kcvcpetb[3]                       @515      0x00

      ub1 kcvcpetb[4]                       @516      0x00

      ub1 kcvcpetb[5]                       @517      0x00

      ub1 kcvcpetb[6]                       @518      0x00

      ub1 kcvcpetb[7]                       @519      0x00

   ub4 kcvfhcpc                             @140      0x0000026b

   ub4 kcvfhrts                             @144      0x32c58dd9

   ub4 kcvfhccc                             @148      0x0000026a

   struct kcvfhbcp, 36 bytes                @152    

      struct kcvcpscn, 8 bytes              @152    

         ub4 kscnbas                        @152      0x00000000

         ub2 kscnwrp                        @156      0x0000

      ub4 kcvcptim                          @160      0x00000000

      ub2 kcvcpthr                          @164      0x0000

      union u, 12 bytes                     @168    

       ……………………………………………省略部分信息………………………………………………  

   struct kcvfhprs, 8 bytes                 @420    

      ub4 kscnbas                           @420      0x003a40e3

      ub2 kscnwrp                           @424      0x0000

   struct kcvfhprfs, 8 bytes                @428    

      ub4 kscnbas                           @428      0x00000000

      ub2 kscnwrp                           @432      0x0000

   ub4 kcvfhtrt                             @444      0x00000000

7、  查看正常数据文件头(1system01数据文件头)scn转码前的值

BBED> dump offset 484 count 4

 File: /u01/app/oracle/oradata/orser/system01.dbf (1)

 Block: 1                Offsets:  484 to  487           Dba:0x00400001

------------------------------------------------------------------------

 6e734f00

 

 <32 bytes per line>

8、  修改旧数据文件头(7bbed01数据文件头)scn的值

BBED> m /x 6e734f00 offset 484

Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  484 to  995           Dba:0x01c00001

------------------------------------------------------------------------

 6e734f00 00000800 6c91c532 01000000 93000000 45000000 10000000 02000000

……………………………省略部分信息………………………………………………

 <32 bytes per line>

9、  查看正常数据文件头(1system01数据文件头)chckpoint_time的值

BBED> dump offset 492 count 4

 File: /u01/app/oracle/oradata/orser/system01.dbf (1)

 Block: 1                Offsets:  492 to  495           Dba:0x00400001

------------------------------------------------------------------------

 6692c532

 

 <32 bytes per line>

10、修改旧数据文件头(7bbed01数据文件头)checkpoint_time的值

BBED> m /x 6692c532 offset 492

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  492 to 1003           Dba:0x01c00001

------------------------------------------------------------------------

 6692c532 01000000 93000000 45000000 10000000 02000000 00000000

……………………………省略部分信息………………………………………………

 <32 bytes per line>

11、查看正常数据文件头中检查点计数器(kcvfhcpc)的值

BBED> dump offset 140 count 4

 File: /u01/app/oracle/oradata/orser/system01.dbf (1)

 Block: 1                Offsets:  140 to  143           Dba:0x00400001

------------------------------------------------------------------------

 6b020000

 

 <32 bytes per line>

12、修改旧数据文件头中检查点计数器(kcvfhcpc

 

BBED> m /x 6b020000 offset 140

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  140 to  651           Dba:0x01c00001

------------------------------------------------------------------------

 6b020000 00000000 03000000 00000000 00000000 00000000 00000000

……………………………省略部分信息………………………………………………

 <32 bytes per line>

13、查看正常数据文件头中控制文件备份的计数器(kcvfhccc)的值

BBED> dump offset 148 count 4

 File: /u01/app/oracle/oradata/orser/system01.dbf (1)

 Block: 1                Offsets:  148 to  151           Dba:0x00400001

------------------------------------------------------------------------

 6a020000

 

 <32 bytes per line>

14、修改旧数据文件头中控制文件备份的计数器(kcvfhccc)的值

BBED> m /x 6a020000 offset 148

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  148 to  659           Dba:0x01c00001

------------------------------------------------------------------------

 6a020000 00000000 00000000 00000000 00000000 00000000 00000000

……………………………省略部分信息………………………………………………

 <32 bytes per line>

15、重新生成sum

BBED> sum apply

Check value for File 7, Block 1:

current = 0x953d, required = 0x953d

16、查询各个数据文件头scn

SYS@orser>  select file#,checkpoint_change#,name from v$datafile_header;

 

     FILE# CHECKPOINT_CHANGE# NAME

---------- ------------------ --------------------------------------------------

         1            5206894 /u01/app/oracle/oradata/orser/system01.dbf

         2            5206894 /u01/app/oracle/oradata/orser/sysaux01.dbf

         3            5206894 /u01/app/oracle/oradata/orser/undotbs01.dbf

         4            5206894 /u01/app/oracle/oradata/orser/users01.dbf

         5            5206894 /u01/app/oracle/oradata/orser/index01.dbf

         6            5206894 /u01/app/oracle/oradata/orser/orser01.dbf

         7            5206894 /u01/app/oracle/oradata/orser/bbed01.dbf

         9            5206894 /u01/app/oracle/oradata/orser/iot01.dbf

        10            5206894 /u01/app/oracle/oradata/orser/example01.dbf

 

9 rows selected.

可以看到与其他数据文件scn已经相同

17、尝试启动数据库

SYS@orser> alter database open;

alter database open

*

ERROR at line 1:

ORA-01122: database file 7 failed verification check

ORA-01110: data file 7: '/u01/app/oracle/oradata/orser/bbed01.dbf'

   ORA-01207: file is more recent than control file - old control file

18、查看控制文件中关于bbed数据文件的信息

SYS@orser> alter session set events 'immediate trace name controlf level 8'; 

 

Session altered.

 

SYS@orser> select value from v$diag_info where name='Default Trace File';

 

VALUE

--------------------------------------------------------------------------------

/u01/app/oracle/diag/rdbms/orser/orser/trace/orser_ora_3558.trc

部分内容:

name #11: /u01/app/oracle/oradata/orser/bbed01.dbf

creation size=1280 block size=8192 status=0xe head=11 tail=11 dup=1

 tablespace 20, index=8 krfil=7 prev_file=0

 unrecoverable scn: 0x0000.00000000 01/01/1988 00:00:00

 Checkpoint cnt:7 scn: 0x0000.004f736e 07/01/2014 21:34:30

19、 修改旧数据文件头中检查点计数器(kcvfhcpc)为控制文件记录的值

BBED> m /x 07000000 offset 140

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  140 to  651           Dba:0x01c00001

------------------------------------------------------------------------

 07000000 00000000 6a020000 00000000 00000000 00000000 00000000

 

 <32 bytes per line>

20、 修改旧数据文件头中控制文件备份的计数器(kcvfhccc)的值

BBED> m /x 06000000 offset 148

 File: /u01/app/oracle/oradata/orser/bbed01.dbf (7)

 Block: 1                Offsets:  148 to  659           Dba:0x01c00001

------------------------------------------------------------------------

 06000000 00000000 00000000 00000000 00000000 00000000 00000000

 

 <32 bytes per line>

21、重新生成sum

BBED> sum apply

Check value for File 7, Block 1:

current = 0x953d, required = 0x953d

22、 尝试启动数据库

SYS@orser> alter database open;

 

Database altered.

23、  启动成功

© 著作权归作者所有

共有 人打赏支持
科技创造
粉丝 36
博文 197
码字总数 174505
作品 0
徐汇
程序员
oracle特殊恢复-bbed修改某个数据文件头

数据文件头中的scn要与控制文件中的scn一致,数据库才可以open,在open过程中我们可以通过bbed来修改某个数据文件头的scn,来欺骗oracle,来open库。 1、环境如下 使用Oracle 11gR2进行测试,...

qhd2004 ⋅ 2016/11/10 ⋅ 0

通过修改控制文件scn推进数据库scn

在数据库遇到ora-600[2662],scn不一致(又没有日志)的时候,我们首先想到的就是去推进数据库的scn,让数据库能够open起来,抢救其中的数据,但是由于各种乱用的情况,oracle scn的pach出来后(11...

tututu_jiang ⋅ 05/08 ⋅ 0

一次导致数据丢失的小变更

前言 不知不觉,技术人生系列·我和数据中心的故事来到了第十期,小y又和大家见面了! 前期我们分享了不少Oracle数据库故障和优化的实战案例,有朋友问,小y是否可以分享一些无备份时数据恢复...

DBA小y ⋅ 2017/07/25 ⋅ 0

记一次数据库参数compatible降级[转]

转:http://dbzone.iteye.com/blog/1042455 众所周知,Oracle参数compatible 主要用于启用Oracle针对某一版本的新特性。但此参数设置时,只能往上调,设置好之后不能往下降。 引用 You can ...

长征2号 ⋅ 01/21 ⋅ 0

非常规方法,轻松应对Oracle数据库危急异常

相信很多ORACLE DBA在职业生涯中或多或少都遇到过这样的情况:数据文件被误删了,存储坏了无法识别数据文件,最糟糕的是,竟然rman备份也是坏的…… 遇到问题凌乱慌张是没用的,而贸然动手也...

唐小丹、周凯 ⋅ 2016/04/08 ⋅ 0

bbed 修复数据文件头

把同一表空间下的好的数据文件头拷贝到有问题的数据文件头,例如: copy file x block 1 to file y block 1,然后按如下offset来确认并修改。 rdba_kcbh (offset 4) 即使文件头block的rdba地...

qhd2004 ⋅ 2016/12/20 ⋅ 0

故障诊断 | 存储Cache丢失导致数据库无法open的案例分享

当存储Cache由于丢失时,我们应该如何处理,让数据库重新能够open起来呢?让我们听听,云和恩墨 ACE 李真旭分享的这篇案例。 发现问题 最近某客户的一套核心数据库由于存储问题导致清掉Cache...

技术小能手 ⋅ 01/05 ⋅ 0

存储Cache 丢失导致数据库无法open的案例

存储Cache 丢失导致数据库无法open的案例 love wife & love life --Roger2017-09-276 阅读 Indexkeybackup 本站文章除注明转载外,均为本站原创: 转载自 love wife & love life —Roger的O...

love wife & love life --Roger ⋅ 2017/09/27 ⋅ 0

推陈出新:12C 推进 SCN 新方法实践

超过10年专职电信行业 Oracle 数据库管理和运维经验,熟悉电信行业的业务、数据库及硬件架构。擅长数据库各种迁移方法、优化、疑难故障排除、数据库异常恢复等。 在数据库异常恢复中,经常需...

技术小能手 ⋅ 04/08 ⋅ 0

关于oracle实例恢复的前滚和回滚的理解

关于oracle实例恢复的一些理解,一直都有误区,今天通过查看相关资料和与同学探讨,发觉了自己的错误,探讨结果如下: 实例恢复:当数据库非正常关闭的时候(断电或者shu abort等等非一致性关...

wangergui ⋅ 2017/06/04 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 19分钟前 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 45分钟前 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

Dockerfile基础命令总结

FROM 指定使用的基础base image FROM scratch # 制作base image ,不使用任何基础imageFROM centos # 使用base imageFROM ubuntu:14.04 尽量使用官方的base image,为了安全 LABEL 描述作...

ExtreU ⋅ 昨天 ⋅ 0

存储,对比私有云和公有云的不同

导读 说起公共存储,很难不与后网络公司时代的选择性外包联系起来,但尽管如此,它还是具备着简单和固有的可用性。公共存储的名字听起来也缺乏专有性,很像是把东西直接堆放在那里而不会得到...

问题终结者 ⋅ 昨天 ⋅ 0

C++难点解析之const修饰符

C++难点解析之const修饰符 c++ 相比于其他编程语言,可能是最为难掌握,概念最为复杂的。结合自己平时的C++使用经验,这里将会列举出一些常见的难点并给出相应的解释。 const修饰符 const在c...

jackie8tao ⋅ 昨天 ⋅ 0

聊聊spring cloud netflix的HystrixCommands

序 本文主要研究一下spring cloud netflix的HystrixCommands。 maven <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clo......

go4it ⋅ 昨天 ⋅ 0

Confluence 6 从其他备份中恢复数据

一般来说,Confluence 数据库可以从 Administration Console 或者 Confluence Setup Wizard 中进行恢复。 如果你在恢复压缩的 XML 备份的时候遇到了问题,你还是可以对整个站点进行恢复的,如...

honeymose ⋅ 昨天 ⋅ 0

myeclipse10 快速搭建spring boot开发环境(入门)

1.创建一个maven的web项目 注意上面标红的部分记得选上 2.创建的maven目录结构,有缺失的目录可以自己建立目录补充 补充后 这时候一个maven的web项目创建完成 3.配置pom.xml配置文件 <proje...

小海bug ⋅ 昨天 ⋅ 0

nginx.conf

=========================================================================== nginx.conf =========================================================================== user nobody; #......

A__17 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部