Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3056417
  • 博文数量: 206
  • 博客积分: 3409
  • 博客等级: 中校
  • 技术积分: 4066
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-24 10:21
个人简介

● ITPUB名人堂嘉宾 ● ChinaUnix社区博客专家 ● ChinaUnix社区Oracle板块版主 ● 优酷网认证音乐牛人:EricGuitar ● SDOUG 核心成员 ●E-mail:gaoqiangdba@163.com

文章分类

全部博文(206)

文章存档

2021年(11)

2020年(7)

2019年(7)

2016年(5)

2015年(36)

2014年(23)

2013年(15)

2012年(23)

2011年(61)

2010年(18)

分类: Oracle

2015-02-27 17:00:45

  



官方简介:

  The name bbed is an acronym for Block Browser and EDitor and it is shipped with thedatabase. It is intended for Oracle internal use only and the company neverpublishes any details about it. It is a very powerful tool but also extremelydangerous since it can change and/or corrupt data blocks of any Oracledatabase.

   If you use this tool, you do so at your own risk. Any modifications made with thistool render the database unsupported by Oracle.
 
   BBED是Oracle的内部工具,不受Oracle技术支持,该工具像一把锋利的手术刀,可以切入数据块内部进行修修改改,因此非常危险,操作需特别谨慎!


实验目的:
 使用BBED修改数据文件内的数据信息。



操作过程:


1.获取数据文件的文件号、文件绝对路径名和大小:
SQL> select file#||' '||name||' '||bytes from v$datafile ;
FILE#||''||NAME||''||BYTES
--------------------------------------------------------------------------------
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760


10 rows selected.



2.创建文件清单:
[oracle@dbserver oracle]$ vi filelist.txt
加入如下内容:
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760




[oracle@dbserver oracle]$ cat filelist.txt 
1 /oracle/app/oradata/ORCL/datafile/o1_mf_system_8xm4839m_.dbf 859832320
2 /oracle/app/oradata/ORCL/datafile/o1_mf_sysaux_8xm483f7_.dbf 555745280
3 /oracle/app/oradata/ORCL/datafile/o1_mf_undotbs1_8xm483gd_.dbf 89128960
4 /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf 70778880
5 /oracle/app/oradata/ORCL/datafile/o1_mf_example_8xm4gzck_.dbf 108134400
6 /oracle/app/oradata/catalog_rman/rmantbs01.dbf 52428800
7 /oracle/app/oradata/ORCL/datafile/gaoqiang.dbf 5242880
8 /oracle/app/oradata/ORCL/datafile/gao.dbf 5242880
9 /oracle/app/oradata/ORCL/datafile/lee.dbf 10485760
10 /oracle/app/oradata/ORCL/datafile/jon.dbf 10485760



3.创建bbed参数文件:
[oracle@dbserver oracle]$ cat bbed.par
blocksize=8192
listfile=/oracle/filelist.txt
mode=edit



4.登陆BBED:
[oracle@dbserver oracle]$ bbed parfile=/oracle/bbed.par
Password: 


BBED: Release 2.0.0.0.0 - Limited Production on Tue Jan 27 05:56:31 2015


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


************* !!! For Oracle Internal Use only !!! ***************                   ----谨慎使用,No Zuo No Die~~~












5.查看未修改的表状态:
SQL> select * from summary;


ID INFO
---------- ----------------------------
1 Eric Gao is a Oracle DBA
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA


6.查看物理信息:
SQL> select rowid,dbms_rowid.rowid_relative_fno(rowid) rel_fno,dbms_rowid.rowid_block_number(rowid) blockno,dbms_rowid.rowid_row_number(rowid) rowno from summary;


ROWID      REL_FNO BLOCKNO      ROWNO
------------------ ---------- ---------- ----------
AAASmYAAEAAAAKNAAA    4     653  0
AAASmYAAEAAAAKNAAB    4     653  1
AAASmYAAEAAAAKNAAC    4     653  2
AAASmYAAEAAAAKNAAD    4     653  3

dbms_rowid.rowid_relative_fno(rowid)该函数返回输入参数rowid所对应的文件号,文件号是相对于表空间的。
其他的两个函数以此类推分别是:数据块号获取函数和行号获取函数。



7.在bbed中找相关的关键字:
BBED> set dba 4,653 offset 0
DBA             0x0100028d (16777869 4,653)
OFFSET         0



BBED> find /c Oracle
 File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
 Block: 653              Offsets: 8178 to 8191           Dba:0x0100028d
------------------------------------------------------------------------
 4f726163 6c652044 42410106 0385 


 <32 bytes per line>




8.查看该位置的信息:
BBED> dump /v dba 4,653 offset 8178 count 6
 File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
 Block: 653     Offsets: 8178 to 8183  Dba:0x0100028d
-------------------------------------------------------
 4f726163 6c65                       l Oracle


 <16 bytes per line>




9.修改数据块信息:
BBED> modify /c 'ORACLE' dba 4,653 offset 8178
 File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
 Block: 653              Offsets: 8178 to 8183           Dba:0x0100028d
------------------------------------------------------------------------
 4f524143 4c45 


 <32 bytes per line>

10.输出修改后的内容:
BBED> dump /v dba 4,653 offset 8178 count 6
 File: /oracle/app/oradata/ORCL/datafile/o1_mf_users_8xm483jk_.dbf (4)
 Block: 653     Offsets: 8178 to 8183  Dba:0x0100028d
-------------------------------------------------------
 4f524143 4c45                       l ORACLE


 <16 bytes per line>

11.保存:
BBED> sum dba 4,653
Check value for File 4, Block 653:
current = 0x7bcf, required = 0x5bcf



BBED> sum dba 4,653 apply
Check value for File 4, Block 653:
current = 0x5bcf, required = 0x5bcf





12.验证修改成果
SQL> conn eric
SQL> alter system flush buffer_cache;
System altered.


SQL> select * from summary; 
ID INFO
---------- ----------------------------
1 Eric Gao is a ORACLE DBA    -----可以看到该数据已经由原来的Oracle修改成了ORACLE。
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA



OK!修改完成!




PS:这是个非常2的测试,完全可以用语句: update summary set info='Eric Gao is a ORACLE DBA' where info='Eric Gao is a ORACLE DBA';  修改过来...

本次实验仅为了提供简单的BBED小小手术刀操作体验。




SQL>  update summary set info='Eric Gao is a Oracle DBA' where info='Eric Gao is a ORACLE DBA';


1 row updated.


SQL> select * from summary;


ID INFO
---------- ----------------------------
1 Eric Gao is a ORACLE DBA
1 Eric Gao is a PostgreSQL DBA
1 Eric Gao is a AIX SA
1 Eric Gao is a Linux SA

阅读(6057) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~