背景

学习用bbed替换同一个表中不同数据块,即用同一个表中1个数据块的内容替换另一个数据块的内容。

结论

1,可以使用bbed copy命令复制一个数据块内容到另一个数据块
2,copy命令为
BBED> help copy
COPY [ DBA | FILE | FILENAME | BLOCK ] TO [ DBA | FILE | FILENAME | BLOCK ]

3,使用bbed copy复制数据块后,目标数据块的kcbh结构体的rdba_kcbh要恢复到修改前的内容
4,在用copy复制数据块前,先要查看或备份下源数据块的内容
  p kcbh block 源数据块编号
5,rdba_kcbh它是以反序显示,但存储以显示的顺序反过来存储
   具体修改顺序如下:
     1,查看未复制前的rdba_kcbh,用命令:p kcbh block 未修改前的目标数据块
     2, 采用copy复制源数据块内容到目标数据块,用命令:copy 源数据块 to 目标数据块
     3, 定位到目标数据块的rdba_kcbh的偏移量,还原rdba_kcbh为修改前的内容,用命令
         set block 目标数据块
         set offset rdba_kcbh的偏移量 (一般源于修改前的map获取,因为修改中间不能使用map,可能会报错) 
         根据修改前的rdba_kcbh内容,用m /x 修改前的rdba_kcbh值,进行还原即可
         固化或真正修改目标数据块,用命令:sum apply
         查看目标数据块的rdba_kcbh,用命令:p rdba_kcbh,查看是否变更成功

4,如果中期想回退操作,使用undo即可

6,bbed print命令,组合非常强大,可以基于数据块地址,文件号,文件名称,块号,块内的偏移量,或块内的结构体,或采用父子树状结构体,显示其数据块的对应内容
BBED> help print
PRINT[/x|d|u|o|c] [ DBA | FILE | FILENAME | BLOCK | OFFSET | symbol | *symbol ]

BBED> p block 99183 
kcbh.type_kcbh
--------------
ub1 type_kcbh                               @0        0x06

BBED> p 4
kcbh.rdba_kcbh
--------------
ub4 rdba_kcbh                               @4        0x0101836f

BBED> p rdba_kcbh
ub4 rdba_kcbh                               @4        0x0101836f

BBED> p kcbh.rdba_kcbh
ub4 rdba_kcbh                               @4        0x0101836f

7,用bbed修改数据块的内容,必须用强制刷新缓冲池,方可生效,否则仍是原有的值

感叹,BBED牛比啊,强悍

测试

SQL> select * from v$version where rownum=1;

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

SQL> create table t_replace_block(a int,b int);

Table created.

SQL> insert into t_replace_block select level,level from dual connect by level<=10000;

10000 rows created.

SQL> commit;

Commit complete.

SQL> select distinct DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID) from t_copy_block;

DBMS_ROWID.ROWID_RELATIVE_FNO(ROWID)
------------------------------------
                                   4

SQL> select distinct DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID) block_number from t_copy_block;

BLOCK_NUMBER
------------
       99182
       99183
       99185
       99198
       99193
       99197
       99187
       99189
       99199
       99179
       99180

BLOCK_NUMBER
------------
       99194
       99190
       99181
       99184
       99186
       99188
       99191

18 rows selected.

数据块99182
SQL> select a,b from t_copy_block where DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)=99182 and dbms_rowid.rowid_row_number(rowid)=1;

A          B
---------- ----------
      1135       1135

数据块99183
SQL> select a,b from t_copy_block where DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)=99183 and dbms_rowid.rowid_row_number(rowid)=1;

A          B
---------- ----------
      1694       1694

准备用99182数据块内容替换99183数据块内容

[oracle@seconary bbed_test]$ bbed parfile=bbed.text password=blockedit

BBED: Release 2.0.0.0.0 - Limited Production on Fri Oct 30 21:49:57 2015

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

************* !!! For Oracle Internal Use only !!! ***************

查看数据块99182
BBED> p kcbh block 99182
struct kcbh, 20 bytes                       @0       
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x0101836e
   ub4 bas_kcbh                             @8        0x037afb1b
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x1d7a
   ub2 spare3_kcbh                          @18       0x0000

查看数据块99183
BBED> p kcbh block 99183
struct kcbh, 20 bytes                       @0       
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x0101836f
   ub4 bas_kcbh                             @8        0x037afb1b
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x9362
   ub2 spare3_kcbh                          @18       0x0000

复制数据块99182内容到数据块99183
BBED> copy block 99182 to block 99183
 File: /oracle/oradata/guowang/users01.dbf (4)
 Block: 99183            Offsets:    0 to   31           Dba:0x0101836f
------------------------------------------------------------------------
 06a20000 6e830101 1bfb7a03 00000106 7a1d0000 01002100 dc240100 8ff97a03

<32 bytes per line>

再次查看数据块99183
 BBED> p kcbh block 99183
struct kcbh, 20 bytes                       @0       
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x0101836e
   ub4 bas_kcbh                             @8        0x037afb1b
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x1d7a
   ub2 spare3_kcbh                          @18       0x0000

BBED>

当前数据块变成复制数据块的目标数据块99183
BBED> d
 File: /oracle/oradata/guowang/users01.dbf (4)
 Block: 99183            Offsets:    0 to   31           Dba:0x0101836f
------------------------------------------------------------------------
 06a20000 6e830101 1bfb7a03 00000106 7a1d0000 01002100 dc240100 8ff97a03

<32 bytes per line>

BBED> d
 File: /oracle/oradata/guowang/users01.dbf (4)
 Block: 99183            Offsets:    4 to   35           Dba:0x0101836f
------------------------------------------------------------------------
 6e830101 1bfb7a03 00000106 7a1d0000 01002100 dc240100 8ff97a03 0000e81f

<32 bytes per line>

但复制后还需要把99183数据块的rdba_kcbh还原回去,用于指定文件号及数据块,不然就乱套了
BBED> p rdba_kcbh block 99183
ub4 rdba_kcbh                               @0        0x0000a206

未复制前的99183数据块的rdba_kcbh
   ub4 rdba_kcbh                            @4        0x0101836f

BBED> p kcbh    
struct kcbh, 20 bytes                       @0       
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x0101836e
   ub4 bas_kcbh                             @8        0x037afb1b
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x1d7a
   ub2 spare3_kcbh                          @18       0x0000

BBED> set offset 4
        OFFSET          4

BBED> d
 File: /oracle/oradata/guowang/users01.dbf (4)
 Block: 99183            Offsets:    4 to   35           Dba:0x0101836f
------------------------------------------------------------------------
 6e830101 1bfb7a03 00000106 7a1d0000 01002100 dc240100 8ff97a03 0000e81f

<32 bytes per line>

BBED> m /x 6f830101
 File: /oracle/oradata/guowang/users01.dbf (4)
 Block: 99183            Offsets:    4 to   35           Dba:0x0101836f
------------------------------------------------------------------------
 6f830101 1bfb7a03 00000106 123d0000 01002100 dc240100 8ff97a03 0000e81f

<32 bytes per line>

BBED> sum apply
Check value for File 4, Block 99183:
current = 0x1d7b, required = 0x1d7b

BBED> p kcbh block 99183
struct kcbh, 20 bytes                       @0       
   ub1 type_kcbh                            @0        0x06
   ub1 frmt_kcbh                            @1        0xa2
   ub1 spare1_kcbh                          @2        0x00
   ub1 spare2_kcbh                          @3        0x00
   ub4 rdba_kcbh                            @4        0x0101836f
   ub4 bas_kcbh                             @8        0x037afb1b
   ub2 wrp_kcbh                             @12       0x0000
   ub1 seq_kcbh                             @14       0x01
   ub1 flg_kcbh                             @15       0x06 (KCBHFDLC, KCBHFCKV)
   ub2 chkval_kcbh                          @16       0x1d7b
   ub2 spare3_kcbh                          @18       0x0000

再次查看表的数据是否变化过来

可见数据块的内容已经发生了,但一定要进行刷新缓冲池,才能让新变更的内容体现出来
SQL> select a,b from t_copy_block where DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)=99183 and dbms_rowid.rowid_row_number(rowid)=1;

A          B
---------- ----------
      1694       1694

SQL> alter system flush buffer_cache;

System altered.

SQL> select a,b from t_copy_block where DBMS_ROWID.ROWID_BLOCK_NUMBER(ROWID)=99183 and dbms_rowid.rowid_row_number(rowid)=1;

A          B
---------- ----------
      1135       1135

个人简介:

8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问。
服务过的客户:
中国电信
中国移动
中国联通
中国电通
国家电网
四川达州商业银行
湖南老百姓大药房
山西省公安厅
中国邮政
北京302医院     
河北廊坊新奥集团公司

 项目经验:
中国电信3G项目AAA系统数据库部署及优化
中国联通CRM数据库性能优化
中国移动10086电商平台数据库部署及优化
湖南老百姓大药房ERR数据库sql优化项目
四川达州商业银行TCBS核心业务系统数据库模型设计和RAC部署及优化
四川达州商业银行TCBS核心业务系统后端批处理存储过程功能模块编写及优化
北京高铁信号监控系统RAC数据库部署及优化
河南宇通客车数据库性能优化
中国电信电商平台核心采购模块表模型设计及优化
中国邮政储蓄系统数据库性能优化及sql优化
北京302医院数据库迁移实施
河北廊坊新奥data guard部署及优化
山西公安厅身份证审计数据库系统故障评估
联系方式:
手机:18201115468
qq   :   305076427
qq微博: wisdomone1
新浪微博:wisdomone9
qq群:275813900    
itpub博客名称:wisdomone1    http://blog.itpub.net/9240380/

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/9240380/viewspace-1820208/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/9240380/viewspace-1820208/

用oracle 11g bbed copy替换同一个表数据块block为另一个数据块之系列八相关推荐

  1. oracle 11g的audit导致system表空间快速增长的问题

    oracle 11g的audit导致system表空间快速增长的问题         分类:             oracle              2012-03-23 16:20     ...

  2. Oracle 11g新特性之--只读表(read only table)

    Oracle 11g新特性之--只读表(read only table)       Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行 ...

  3. Oracle 11g 新特性:只读表(Read-only)

    Oracle 11g 新特性:只读表(Read-only) Oracle11g推出了一个新的特性,可以将table置于read only状态,处于该状态的table的不能执行DML操作和某些DDL操作 ...

  4. 玩转oracle 11g(5):表空间的作用

    表空间是oracle内部定义的一个概念,是为了统一oracle物理和逻辑 上的结构而专门建立的,从物理上来说,一个表空间是由具体的一个或多个磁盘上数 据文件构成的(至少1对1,可以1对多),从逻辑上来 ...

  5. Oracle 恢复dmp文件到数据库表中(超大DMP) 【数据系列 3】

    简述 本来我电脑上的docker安装的是oracle 11 结果 oracle 11 xe 支持的 tablespace 最大是11G,但是我的dmp文件是22个G的超大dmp文件.所以很明显是不行的 ...

  6. oracle 11g rac impdp,RAC创建DBlink并使用impdp抽取源库数据

    RAC创建DBlink并使用impdp抽取源库数据 赋权并创建dblink [plain] view plaincopyprint?[Oracle@zhongwc1 ~]$ sqlplus / as ...

  7. 玩转oracle 11g(29):检查操作系统版本和查询表中修改数据

    20.检查操作系统版本: 必须是5.1 or 5.2. 实际为 6.1未通过 解决方法: 修改参数文件oraparam.ini • [Certified Versions] • #You can cu ...

  8. postgres 把一个表的值转成另一个表的字段名_希望一个数据同步,包治百病

    小姐姐味道[ID:xjjdog] 作者:十年架构,日百亿流量经验,与你分享. 哎!这是一个脏活,而且是个高风险的活. 大多数情况下,应用架构设计不好,引入什么新存储,引入什么DDD,治标不治本,都是扯 ...

  9. java安装的时候无效参数_使用Oracle 11g时,保存数据时SQLException: 调用中的无效参数...

    背景与问题描述: 项目环境:jfinal:3.5,druid:1.0.29,oracle11g 驱动:ojdbc6.jar 项目开发完成时切换到Oracle 11g数据库时,某张表save的时候发生S ...

  10. Oracle 11g 新特性简介

    Oracle 11g于2007年7月11日美国东部时间11时(北京时间11日22时)正式发布,11g是甲骨文公司30年来发布的最重要的数据库版本,根据用户的需求实现了信息生命周期管理(Informat ...

最新文章

  1. validating和validated的区别
  2. c语言实现python列表_C语言实现的Python扩展模块
  3. Challenges(分组、聚合、连接)
  4. Unix编程艺术心得
  5. 关于program patterns的一些思考
  6. 总结Python机器学习中的回归算法
  7. RESTful架构与RPC架构
  8. iOS音频播放 (一):概述 转
  9. 国军标-Gjb软件设计说明书模板
  10. VBA按行读取TXT文本文件
  11. 小学生数据分析《西游记》发现大BUG
  12. 生僻字用计算机的歌词,生僻字歌词翻译成常用汉字 陈柯宇生僻字歌曲翻译谐音版...
  13. java guardedby_java并发编程之Guarded Suspention
  14. 各种框架性能分析,和语言性能分析
  15. 算法开启栈转队列武魂
  16. linux禁止软件连接指定网站,利用iptables来配置linux禁止所有端口登陆和开放指定端口...
  17. 2019年计算机专业录取分数线排名,2019中国高校录取分数线排名 全国大学录取分数线表...
  18. 利用遗传算法库DEAP优化交易策略
  19. Tita绩效宝:在360度评估中要问的10个最佳问题
  20. Qt数据库:(三)利用QSqlQuery类执行SQL语句(一)

热门文章

  1. STM32下移植UCOSIII
  2. JobScheduler布置后台任务以及实现进程保活?
  3. latex复杂表格排版
  4. Java程序编写 • 【第4章 程序:随机本周菜品;简易计算器】
  5. android 照片同步 icloud,如何将iCloud照片传输到Android手机
  6. 基于阿里天池的淘宝用户行为分析
  7. oracle碎片产生原因,oracle碎片小结
  8. 移动设备管理存在哪些威胁?
  9. 线性组合(linear combinations), 生成空间(span), 基向量(basis vectors)——线性代数本质(二)
  10. Amazon Dynamo论文中文版