风哥教程

培训 . 交流 . 分享
Make progress together!

【oracle数据库】通过bbed修改表的数据内容

[复制链接]
内容发布:风哥| 发布时间:2013-12-24 11:38:19
虽然bbed 可以在db open 状态来进行修改,但是建议在做任何修改操作之前先关闭数据库。 这样避免checkpoint 进程重写bbed block 的修改。 也避免oraclebbed 修改完成之前读block或者申明block corrupt

1、进入bbed

[oracle@test2:/soft]$bbed parfile=bbed.par
Password: blockedit
BBED: Release 2.0.0.0.0 - Limited Production on Sat Aug 11 08:54:49 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.
************* !!! For Oracle Internal Use only !!! ***************

BBED> info
File#  Name                                                        Size(blks)
-----  ----                                                        ----------
     6  /oracle/app/oracle/oradata/test2db/test201.256.790241825              6400

2、查看要修改的内容
        
SQL> select * from test01;

        ID NAME
---------- ------------------------------------------------------------
         1 test
         2 test2
         3 testlinling
        
注意:bbed 的修改仅仅是对原有位置内容的一个替换。

对应block 的信息如下:

SQL> select
  2  rowid,
  3  dbms_rowid.rowid_relative_fno(rowid)rel_fno,
  4  dbms_rowid.rowid_block_number(rowid)blockno,
  5  dbms_rowid.rowid_row_number(rowid) rowno
  6  from test01;

ROWID                 REL_FNO    BLOCKNO      ROWNO
------------------ ---------- ---------- ----------
AAATwpAAGAAAACDAAA          6        131          0
AAATwpAAGAAAACDAAB          6        131          1
AAATwpAAGAAAACDAAC          6        131          2
        
3、查找关键字testlinling,确定其在block中的偏移量offset

BBED> set dba 6,131 offset 0
        DBA             0x01800083 (25165955 6,131)
        OFFSET          0

BBED> find /c testlinling
File: /oracle/app/oracle/oradata/test2db/test201.256.790241825 (6)
Block: 131              Offsets: 8156 to 8191           Dba:0x01800083
------------------------------------------------------------------------
7a686f75 6c696e6c 696e672c 000202c1 03037a6c 6c2c0002 02c10204 7a686f75
0206ad64

<32 bytes per line>

dump 查看具体内容

BBED> dump /v
File: /oracle/app/oracle/oradata/test2db/test201.256.790241825 (6)
Block: 131     Offsets: 8156 to 8191  Dba:0x01800083
-------------------------------------------------------
7a686f75 6c696e6c 696e672c 000202c1 l testlinling,....
03037a6c 6c2c0002 02c10204 7a686f75 l ..test2,......test
0206ad64                            l ...d

<16 bytes per line>
        
注意这里面的Offsets:8156 to 8191 它指的是这一行的一个地址。其中:
z offset 8156
h offset 8157
o offset 8158
u offset 8159
l offset 8160
i offset 8161
n offset 8162
l offset 8163
i offset 8164
n offset 8165
g offset 8166

//空格也算offset


4、修改block,将testlinling换成testuser

BBED> modify /c 'testuser   ' dba 6,131 offset 8156
File: /oracle/app/oracle/oradata/test2db/test201.256.790241825 (6)
Block: 131              Offsets: 8156 to 8191           Dba:0x01800083
------------------------------------------------------------------------
7a686f75 6c696e67 2020202c 000202c1 03037a6c 6c2c0002 02c10204 7a686f75
0206ad64

<32 bytes per line>

BBED> dump /v
File: /oracle/app/oracle/oradata/test2db/test201.256.790241825 (6)
Block: 131     Offsets: 8156 to 8191  Dba:0x01800083
-------------------------------------------------------
7a686f75 6c696e67 2020202c 000202c1 l testuser   ,....
03037a6c 6c2c0002 02c10204 7a686f75 l ..test2,......test
0206ad64                            l ...d

<16 bytes per line>

//注意这里testuser我用单引号括起来,并且最后还有3个空格,这样就是7bytes,不用单引号括起来,无法表示空格,验证一下

5、应用变更生效

BBED> sum dba 6,131
Check value for File 6, Block 131:
current = 0xf909, required = 0xbc07

此时 current checksum 0xf909requiredchecksum 0xbc07

BBED> sum dba 6,131 apply
Check value for File 6, Block 131:
current = 0xbc07, required = 0xbc07

加上apply参数,使checksum一致。即之前的修改生效。

BBED> verify
DBVERIFY - Verification starting
FILE = /oracle/app/oracle/oradata/test2db/test201.256.790241825
BLOCK = 131


DBVERIFY - Verification complete

Total Blocks Examined         : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing   (Data) : 0
Total Blocks Processed (Index): 0
Total Blocks Failing   (Index): 0
Total Blocks Empty            : 0
Total Blocks Marked Corrupt   : 0
Total Blocks Influx           : 0
Message 531 not found;  product=RDBMS; facility=BBED

我们来检查数据内容的变化:

SQL> alter system flush buffer_cache;

System altered.

SQL> select * from test01;

        ID NAME
---------- ------------------------------------------------------------
         1 test
         2 test2
         3 testuser

OK,已经修改成功





上一篇:恢复误删Oracle数据库所有文件后出现ORA-08102: index key not found......
下一篇:【BBED】bbed工具安装(oracle10g,oracle11g)
专业提供Oracle/MySQL/NoSQL/Linux数据库培训与技术支持服务,QQ号:113257174
关注风哥教程微信公众号itpux_com  ,了解本站最新技术资料的分享.

欢迎加QQ群,提供超多高质量Oracle/Unix/Linux技术文档与视频教程的下载。

Oracle/MySQL/Linux群4-5:189070296  150201289  
Oracle/MySQL/Linux群6-8:244609803   522261684   522651731
备注:请勿重复加群,另请注明 from itpux
回复

使用道具 举报

内容发布:ora| 发布时间:2020-9-14 17:46:56

学习了,继续努力。。。


回复 支持 反对

使用道具 举报

内容发布:liulp770522| 发布时间:2014-11-11 16:24:44
学习了,继续努力。。。
回复 支持 反对

使用道具 举报

内容发布:xjcydf909| 发布时间:2014-10-28 13:19:02
路过~~~~~~~~
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门文章教程

  • MySQL5权威指南(第3版)PDF电子版下载
  • 风哥Oracle数据库巡检工具V1.0(附2.6网页
  • PostgreSQL数据库中文培训手册
  • Navicat for MySQL最新版下载地址及注册码
  • Oracle OCP认证考试IZ0-053题库共712题数据
  • Oracle Database 12c 数据库100个新特性与
快速回复 返回顶部 返回列表