`

bbed修改scn

 
阅读更多
使用BBED修改SCN

Posted on May 9, 2012 at 5:30 pm by vogts
文章来源:http://www.alidba.net/index.php/archives/594

下面这个错误,我想是很多DBA的痛。

@>startup ;
ORACLE instance started.

Total System Global Area  838860800 bytes
Fixed Size                  2087608 bytes
Variable Size             494929224 bytes
Database Buffers          335544320 bytes
Redo Buffers                6299648 bytes
Database mounted.
ORA-01113: file 5 needs media recovery
ORA-01110: data file 5: ‘/data/oracle/oradata/orcl/wt_tbs01.dbf’

有备份还好,没备份基本上只有把数据文件offline了。DBA准备打包回家吧。

经过无数次的测试,确认修改SCN号可以搞定。目前网上的文章,多少还是有些错误。经过反复的测试,确认没有问题。
我们直接使用BBED查看下当前SYSTEM TBS表空间的SCN号:

BBED> set file 1
FILE#           1

数据文件头就是第一个block块,因此我们不需要设置其他block块,
此外map可以显示block里的详细信息。我们发现就一个“kcvfh”,OK直接查看这个吧。
BBED> map
File: /data/oracle/oradata/bops10g/system01.dbf (1)
Block: 1                                     Dba:0×00400001
————————————————————
Data File Header

struct kcvfh, 676 bytes                    @0

ub4 tailchk                                @8188

print出来的内容太多,我做了删剪,留下我们有用的内容。
BBED> print kcvfh
struct kcvfh, 676 bytes                     @0
…………………………
struct kcvfhckp, 36 bytes                @484
struct kcvcpscn, 8 bytes              @484
ub4 kscnbas                        @484      0×000748bf–SCN的低位
ub2 kscnwrp                        @488      0×0000–SCN的高位
ub4 kcvcptim                          @492      0×2ea86f92 –最后一次checkpoint time
ub2 kcvcpthr                          @496      0×0001

………………………………
ub4 kcvfhcpc                             @140      0×0000007f—checkpoint count
ub4 kcvfhrts                             @144      0×2ea86844
ub4 kcvfhccc                             @148      0×0000007e
–oracle 一个TBS最多30个字符,通过BBED ,我们发现这里是定长的
text kcvfhtnm[0]                         @338     S
text kcvfhtnm[1]                         @339     Y
text kcvfhtnm[2]                         @340     S
text kcvfhtnm[3]                         @341     T
text kcvfhtnm[4]                         @342     E
text kcvfhtnm[5]                         @343     M
text kcvfhtnm[6]                         @344
text kcvfhtnm[7]                         @345
text kcvfhtnm[8]                         @346
text kcvfhtnm[9]                         @347
text kcvfhtnm[10]                        @348
text kcvfhtnm[11]                        @349
text kcvfhtnm[12]                        @350
text kcvfhtnm[13]                        @351
text kcvfhtnm[14]                        @352
text kcvfhtnm[15]                        @353
text kcvfhtnm[16]                        @354
text kcvfhtnm[17]                        @355
text kcvfhtnm[18]                        @356
text kcvfhtnm[19]                        @357
text kcvfhtnm[20]                        @358
text kcvfhtnm[21]                        @359
text kcvfhtnm[22]                        @360
text kcvfhtnm[23]                        @361
text kcvfhtnm[24]                        @362
text kcvfhtnm[25]                        @363
text kcvfhtnm[26]                        @364
text kcvfhtnm[27]                        @365
text kcvfhtnm[28]                        @366
text kcvfhtnm[29]                        @367
………………………………

这4个offset的位置内容,文档上是这样说的:

Oracleconsiders four attributes of this data structure when determining if a datafile is sync with the other data files of the database:

(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个来判断一致性,至于中文说明,我也写在上面了。

接下去,我们看看坏掉的wt-tbs01.dbf的信息:

wt_tbs.dbf
struct kcvfhckp, 36 bytes                @484
struct kcvcpscn, 8 bytes              @484
ub4 kscnbas                        @484      0×000747a5
ub2 kscnwrp                        @488      0×0000
ub4 kcvcptim                          @492      0×2ea86f03
ub2 kcvcpthr                          @496      0×0001
union u, 12 bytes                     @500
struct kcvcprba, 12 bytes          @500
ub4 kcrbaseq                    @500      0×00000004
ub4 kcrbabno                    @504      0×00000019
ub2 kcrbabof                    @508      0×0010
**********************
ub4 kcvfhcpc                             @140      0×00000007
ub4 kcvfhrts                             @144      0×2ea86844
ub4 kcvfhccc                             @148      0×00000006

好,484,492,140,148直接修改就好了。
/**************
484
****************/
ub4 kscnbas                        @484      0×000747a5-> 0×000748bf–> bf487400

set offset 484
modify /x bf48
set offset 486
modify /x 0700

/**************
492
******************/
ub4 kcvcptim                          @492      0×2ea86f03->0×2ea86f92 –>926fa8ea

set offset 492
modify /x 926f
set offset 494
modify /x a82e

/**************
140
******************/

ub4 kcvfhcpc                             @140      0×00000007->0×0000007f–>7f000000

set offset 140
modify /x 7f00
set offset 142
modify /x 0000

/**************
148
**************/
ub4 kcvfhccc                             @148      0×00000006->0×0000007e->7e000000

set offset 148
modify /x 7e00
set offset 150
modify /x 0000

最后做下checksum,就OK了

BBED> sum dba 5,1 apply
Check value for File 5, Block 1:
current = 0×554c, required = 0×554c
接下去就简单了,重建控制文件,数据库OPEN RESETLOG搞定

@>startup nomount;
ORACLE instance started.

Total System Global Area  838860800 bytes
Fixed Size                  2087608 bytes
Variable Size             494929224 bytes
Database Buffers          335544320 bytes
Redo Buffers                6299648 bytes
@>CREATE CONTROLFILE REUSE DATABASE “orcl” RESETLOGS  NOARCHIVELOG
2      MAXLOGFILES 5
3      MAXLOGMEMBERS 5
4      MAXDATAFILES 100
5      MAXINSTANCES 1
MAXLOGHISTORY 292
6    7  LOGFILE
8    GROUP 1 ‘/data/oracle/oradata/orcl/redo101.log’  SIZE 10M,
9    GROUP 2 ‘/data/oracle/oradata/orcl/redo201.log’  SIZE 10M,
10    GROUP 3 ‘/data/oracle/oradata/orcl/redo301.log’  SIZE 10M
11  — STANDBY LOGFILE
12  DATAFILE
13    ‘/data/oracle/oradata/orcl/system01.dbf’,
14    ‘/data/oracle/oradata/orcl/undotbs01.dbf’,
15    ‘/data/oracle/oradata/orcl/sysaux01.dbf’,
16    ‘/data/oracle/oradata/orcl/users01.dbf’,
17    ‘/data/oracle/oradata/orcl/wt_tbs01.dbf’
18  CHARACTER SET US7ASCII
19  ;

Control file created.

@>RECOVER DATABASE USING BACKUP CONTROLFILE
ORA-00279: change 477375 generated at 05/09/2012 01:49:06 needed for thread 1
ORA-00289: suggestion : /data/oracle/arch/orcl/1_4_782784012.arc
ORA-00280: change 477375 for thread 1 is in sequence #4

Specify log: {<RET>=suggested | filename | AUTO | CANCEL}
cancel
Media recovery cancelled.
@>ALTER DATABASE OPEN RESETLOGS;

Database altered.


总结一下:
其实本人不懂其中的原理,可能功力不够,用了一个原始的方法,分别2个块的print kcvfh内容导入文件比较,修改其中四个值
(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.
与正确的文件一致!

备份控制文件:
alter database backup controlfile to 'd:\20080326.ctl';(备份成二进制文件) 
alter database backup controlfile to trace;(备份创建控制文件的脚本,在udump目录下)


记录一下,说不定用得上
分享到:
评论

相关推荐

    windows下的bbed

    - 使用bbed需要谨慎,因为直接修改数据块可能会导致更严重的问题,因此通常只有在没有其他恢复选项时才使用。 - 在执行任何更改前,应始终创建数据文件的备份,以防万一操作出错。 - 由于bbed涉及到底层数据操作...

    bbed工具——12C、19C(64位)

    1. **块修改**:bbed能够直接访问数据库的数据文件(.dbf),并允许用户修改存储在这些文件中的数据块。这在处理数据错误或需要进行特定调试时非常有用。 2. **文件编译**:除了修改数据,bbed还支持对PL/SQL源代码...

    bbed.zip用于ORACLE块修改

    标题中的“bbed.zip用于ORACLE块修改”指的是Oracle数据库中的一种特殊工具——bbed,它是一个二进制块编辑器,主要用于修复数据库文件中损坏的块。在Oracle数据库系统中,数据是存储在一系列的物理块(blocks)中的...

    oracle bbed for windows

    Oracle BBED,全称Binary Block Editor,是一款强大的Oracle数据库数据块编辑工具。它允许数据库管理员直接操作数据库的数据块,进行低级别的数据查看和修改,这对于故障排查、数据恢复以及性能优化等工作具有重要...

    bbed文档说明官方

    从给定的文件信息来看,标题“bbed文档说明官方”和描述“bbed文档说明官方,很详细。不要看别的。”明确指出这是一份关于bbed的官方文档,强调了其详细性和权威性,建议用户只参考此文档,避免混淆信息。 然而,给...

    oracle bbed安装配置

    Oracle BBED,全称为Oracle Block Browser and Editor,是一款强大的数据块级别的查看和修改工具,主要用于Oracle数据库内部结构的深入分析。BBED并非官方推荐的常规维护工具,而是专为内部故障恢复设计,对外并不...

    BBED安装包

    BBED能够直接访问这些数据块,实现底层数据的读取和修改,这种能力使得管理员可以执行高级别的数据操作,如修复损坏的数据块或调整头信息,这在数据库故障排查和恢复工作中是不可替代的。 使用BBED进行操作时,管理...

    BBED 需要的.o文件

    4. **使用BBED**:根据问题的具体情况,DBA需要知道如何定位问题数据块的地址,然后使用BBED读取该块,分析问题,必要时进行修改,并将修改后的数据块写回数据库。 5. **安全注意事项**:由于BBED可以修改数据库的...

    oracle11gR2 安装bbed工具

    Bbed(Block Buffer Editor)是 Oracle 数据库管理员和开发人员的重要工具,它可以访问数据库的数据块,并允许直接修改内存中的数据,这对于诊断数据损坏或进行低级别调试非常有用。不过,由于其强大的功能,Bbed 应...

    BLOG_【BBED】bbed常用命令

    BBED(Oracle Block Browser and Editor Tool)是Oracle数据库中一个重要的工具,它被设计为可以查看和直接修改Oracle数据库的数据文件块。这个工具在极端的数据恢复场景中十分有用,例如在数据文件损坏或某些不正常...

    bbed使用.docx

    **bbed工具详解** 在Oracle数据库管理中,`bbed`是一个非常实用的工具,主要用于...请注意,直接修改数据库文件可能对数据造成不可逆的破坏,因此在使用`bbed`时务必谨慎,并确保在进行任何操作前有完整的数据库备份。

    bbed全(linuxAndWindows).zip

    bbed提供了一种交互式的方式来检查和修改备份文件的内容,这在处理数据库问题时非常关键,尤其是在数据恢复的情况下。 在Linux环境中,bbed可以与Oracle的RMAN(恢复管理器)一起使用,RMAN是Oracle数据库管理员...

    oracle 11g bbed缺的库文件

    在Oracle 10g 10.2.0.5版本中,“bbed”是一个内建的维护工具,允许DBA(数据库管理员)直接对数据块进行操作,如查看、修改或恢复损坏的数据块。这个工具对于处理数据库中的物理损坏问题非常有用,尤其是在没有RMAN...

    bbed在11g中需要的相关文件

    bbed工具提供了高级的功能,如查看、修改、删除和插入数据库块中的数据,以及进行十六进制编辑。 在提供的压缩包文件中,我们看到了三个不同平台的bbed相关文件: 1. `bbed_linux_x86`:这是针对32位Linux系统的...

    bbed Oracle数据修复工具

    这个工具允许用户直接操作Oracle数据文件(.dbf)中的数据块,进行读取、修改和写入操作。bbed的强大之处在于,它能帮助管理员对数据库进行低级别修复,尤其是在传统的备份和恢复方法无法解决问题时,bbed往往能成为...

    BBED for Oracle 8.1.7 on Windows

    在Oracle 8.1.7版本中,BBED作为数据库管理工具,提供了对数据库块级别的操作,允许用户直接在操作系统层面操作和修改数据库的数据块,这对于故障排查、数据修复和性能优化具有重要作用。 BBED工具的核心功能包括:...

    Oracle bbed工具 包含Linux和Windows版本

    Oracle bbed工具是Block Browser and Editor(块浏览编辑器)的缩写,...由于bbed可以对Oracle数据库中的数据块进行内容修改和破坏,因此此工具功能强大同时伴有很高的使用风险。 该资源包含了windows版本和 linux版本

    ORACLEBBED1[归纳].pdf

    Oracle BBED 是一款用于直接操作Oracle数据库数据文件的低级别数据修复工具,它允许数据库管理员在块级对数据进行查看、修改和验证。BBED 主要适用于Linux 32位平台上的Oracle 10g及11g数据库,特别是在应对数据库坏...

    bbed-10g-src-x32.rar

    1. **文本与二进制编辑**:bbed能够编辑纯文本文件,同时也可以处理二进制数据,支持查看和修改文件的十六进制表示。 2. **搜索与替换**:提供了强大的搜索和替换功能,可以搜索文本模式、十六进制模式甚至正则...

    Oracle恢复利器,bbed源码

    4. **备份与恢复操作**:在对数据块进行修改前,bbed通常会先创建数据块的备份,确保在操作失误时可以回滚到原始状态,保证数据安全。 使用bbed时,通常需要具备以下几点知识: 1. **Oracle数据库基本概念**:理解...

Global site tag (gtag.js) - Google Analytics