mysql修复坏块_如何利用bbed来修改asm diskgroup中的数据(修复坏块方法类似)?

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger 的Oracle技术博客 本文链接地址: 如何利用bbed来修改asm diskgroup中的数据(修复坏块方法类似)? 很多时候,我们面临一个问题,对于asm diskgroup中的数据文件,如果存在坏块,要么

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: 如何利用bbed来修改asm diskgroup中的数据(修复坏块方法类似)?

很多时候,我们面临一个问题,对于asm diskgroup中的数据文件,如果存在坏块,要么通过备份进行恢复要么进行blockrecover,除了这2种方法之外,对于绝大多数人来讲,我想都是没招儿了。其实不然,你还可以利用bbed来进行修复。这里我没有模拟坏块,仅仅是利用bbed来模拟直接修改asm diskgroup中的表数据,方法类似。

++++创建测试表

SQL> create table t0727(a number);

Table created.

SQL> insert into t0727 values(1);

1 row created.

SQL> insert into t0727 values(10);

1 row created.

SQL> insert into t0727 values(100);

1 row created.

SQL> commit;

Commit complete.

SQL> select dbms_rowid.rowid_relative_fno(rowid) file#,dbms_rowid.rowid_block_number(rowid) blk# from t0727;

FILE# BLK#

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

5 28

5 28

5 28

这里我需要将第3条数据100修改为99.

通过将该block copy到文件系统,然后bbed修改数据,然后再copy到asm diskgroup。

++++copy block to filesystem

SQL> @cp_block_to_fs.sql

Enter value for asm_file_name: +DATA1/test/datafile/roger.260.831967031

old 14: v_AsmFilename := '&ASM_File_Name'; --asm file name

new 14: v_AsmFilename := '+DATA1/test/datafile/roger.260.831967031'; --asm file name

Enter value for block_to_extract: 28

old 15: v_offstart := '&block_to_extract'; --block id

new 15: v_offstart := '28'; --block id

Enter value for number_of_blocks_to_extract: 1

old 16: v_numblks := '&number_of_blocks_to_extract'; --number of blocks to patch

new 16: v_numblks := '1'; --number of blocks to patch

Enter value for filesystem_file_name: /home/oracle/file_528.dbf

old 17: v_FsFilename := '&FileSystem_File_Name';

new 17: v_FsFilename := '/home/oracle/file_528.dbf';

PL/SQL procedure successfully completed.

+++++使用bbed 修改数据

BBED> set file 5 block 1

FILE# 5

BLOCK# 1

BBED> map

File: /home/oracle/file_528.dbf (5)

Block: 1 Dba:0x01400001

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

KTB Data Block (Table/Cluster)

struct kcbh, 20 bytes @0

struct ktbbh, 72 bytes @20

struct kdbh, 14 bytes @

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供10g,11g linux及windows BBED工具 及详细编译说明readme文件。 一. 10g linux编译BBED [oracle@node3 ~]$ cd $ORACLE_HOME/rdbms/lib [oracle@node3 lib]$ make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed 直接生成到bin下为可执行文件 编译完成后: 编译成功后登陆BBED,登陆时需要密码(BBED的默认密码是blockedit) [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 二. 11g linux编译BBED oracle 11gR2环境编译BBED可执行文件所需要的ssbbded.o和sbbdpt.o对象文件被移除,不过可以从oracle 10g环境将这两个文件拷贝到oracle11g环境进行编译。 除了将上面的ssbbded.o和sbbdpt.o 文件拷贝到11g环境外,BBED还需要用到 $ORACLE_HOME/rdbms/mesg目录下的bbedus.msb这个信息文件, 这几个文件都需要从oracle10g拷贝到oracle11g对于的目录。 文件夹linux_10g_bbed_64 包括了这3个文件。 下面是将以上3个文件从Oracle 10g拷贝到11g对于目录后编译的过程。 1)把linux_10g_bbed_64目录下的10g的ssbbded.o和sbbdpt.o 放到 $ORACLE_HOME/rdbms/lib 目录下 2)把linux_10g_bbed_64目录下的10g的 bbedus.msb 文件拷贝到 $ORACLE_HOME/rdbms/mesg目录下 3)编译 [oracle@node1 ~] cd $ORACLE_HOME/rdbms/lib [oracle@node1 ~] make -f ins_rdbms.mk BBED=$ORACLE_HOME/bin/bbed $ORACLE_HOME/bin/bbed [oracle@node3 bin]$ bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:01:07 2018 Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED> 三、windows 11GR2 bbed oracle9i版本以后Oracle不装载BBED了, Windows上也没有makefile来编译bbed。 所以,如果你想在Windows上使用bbed,你需要很多文件(本下载压缩包已经全包含了): 你需要一个bbed.exe. 你只能从Oracle 9i的安装得到它。 你需要有一堆的DLL。所有这些DLL在Oracle9i安装可以得到。 使用BBED需要消息文件。这文件是“bbedus.msb”,位于Oracle9i安装的MESG目录下。而你需要将其复制到ORACLE_HOME的RDBMS\MESG目录下。 这些在目录本压缩包的 bbed_win 已经全部提供了。 把它们放在BBED安装的目录下(比如D:\bbed_win),环境变量ORACLE_HOME设置好。确保消息文件在$ORACLE_HOME\RDBMS\MESG下,最后启动BBED: D:\bbed_win>bbed Password: BBED: Release 2.0.0.0.0 - Limited Production on Wed Apr 11 10:20:43 2018 Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. ************* !!! For Oracle Internal Use only !!! *************** BBED>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值