使用bbed修改数据

bbed是一个强大的工具,允许我们绕过oracle直接从数据文件中修改对应的内容

[email protected]>select * from emp;
     EMPNO ENAME                JOB                       MGR HIREDATE            SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-FEB-81          1600        300         30
      7521 WARD                 SALESMAN                 7698 22-FEB-81          1250        500         30
      7566 JONES                MANAGER                  7839 02-APR-81          2975                    20
      7654 MARTIN               SALESMAN                 7698 28-SEP-81          1250       1400         30
      7698 BLAKE                MANAGER                  7839 01-MAY-81          2850                    30
      7782 CLARK                MANAGER                  7839 09-JUN-81          2450                    10
      7788 SCOTT                ANALYST                  7566 19-APR-87          3000                    20
      7839 KING                 PRESIDENT                     17-NOV-81          5000                    10
      7844 TURNER               SALESMAN                 7698 08-SEP-81          1500          0         30
      7876 ADAMS                CLERK                    7788 23-MAY-87          1100                    20
      7900 JAMES                CLERK                    7698 03-DEC-81           950                    30
      7902 FORD                 ANALYST                  7566 03-DEC-81          3000                    20
      7934 MILLER               CLERK                    7782 23-JAN-82          1300                    10

13 rows selected.

这里我们查看该表对应的物理块号

[email protected]>select rowid,dbms_rowid.rowid_object(rowid) robject,
  2  dbms_rowid.rowid_relative_fno(rowid) fno,
  3  dbms_rowid.rowid_block_number(rowid) bno,
  4  dbms_rowid.rowid_row_number(rowid) rno from emp where rownum=1;
ROWID                 ROBJECT        FNO        BNO        RNO
------------------ ---------- ---------- ---------- ----------
AAASKaAAGAAAACDAAA      74394          6        131          

使用bbed进行修改

BBED> set file 6 block 131
        FILE#           6
        BLOCK#          131

BBED> map
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131                                   Dba:0x01800083
------------------------------------------------------------
KTB Data Block (Table/Cluster)

struct kcbh, 20 bytes                      @0      

struct ktbbh, 96 bytes                     @20     

struct kdbh, 14 bytes                      @124    

struct kdbt[1], 4 bytes                    @138    

sb2 kdbr[13]                               @142    

ub1 freespace[7491]                        @168    

ub1 rowdata[529]                           @7659   

ub4 tailchk                                @8188   

这里通过字符串形式查找 SCOTT

BBED> find /c SCOTT
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131              Offsets: 7902 to 8191           Dba:0x01800083
------------------------------------------------------------------------
53434f54 5407414e 414c5953 5403c24c 430777bb 04130101 0102c21f ff02c115
2c000803 c24e5305 434c4152 4b074d41 4e414745 5203c24f 280777b5 06090101
0103c219 33ff02c1 0b2c0008 03c24d63 05424c41 4b45074d 414e4147 455203c2
4f280777 b5050101 010103c2 1d33ff02 c11f2c00 0803c24d 37064d41 5254494e
0853414c 45534d41 4e03c24d 630777b5 091c0101 0103c20d 3302c20f 02c11f2c
000803c2 4c43054a 4f4e4553 074d414e 41474552 03c24f28 0777b504 02010101
03c21e4c ff02c115 2c000803 c24c1604 57415244 0853414c 45534d41 4e03c24d
630777b5 02160101 0103c20d 3302c206 02c11f2c 000803c2 4b640541 4c4c454e
0853414c 45534d41 4e03c24d 630777b5 02140101 0102c211 02c20402 c11f0206
c656

<32 bytes per line>

dump下来看是不是我们需要的内容:

BBED> d /v offset 7902 count 128
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131     Offsets: 7902 to 8029  Dba:0x01800083
-------------------------------------------------------
53434f54 5407414e 414c5953 5403c24c l SCOTT.ANALYST..L
430777bb 04130101 0102c21f ff02c115 l C.w.............
2c000803 c24e5305 434c4152 4b074d41 l ,....NS.CLARK.MA
4e414745 5203c24f 280777b5 06090101 l NAGER..O(.w.....
0103c219 33ff02c1 0b2c0008 03c24d63 l ....3....,....Mc
05424c41 4b45074d 414e4147 455203c2 l .BLAKE.MANAGER..
4f280777 b5050101 010103c2 1d33ff02 l O(.w.........3..
c11f2c00 0803c24d 37064d41 5254494e l ..,....M7.MARTIN

<16 bytes per line>

BBED> d /v offset 7902 count 12
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131     Offsets: 7902 to 7913  Dba:0x01800083
-------------------------------------------------------
53434f54 5407414e 414c5953          l SCOTT.ANALYS

<16 bytes per line>

BBED> modify /c 'ZBDBA' offset 7902
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131              Offsets: 7902 to 7913           Dba:0x01800083
------------------------------------------------------------------------
5a424442 4107414e 414c5953

<32 bytes per line>

BBED> d /v offset 7902 count 12
File: /opt/oracle/oradata/orcl11g/zbdba01.dbf (6)
Block: 131     Offsets: 7902 to 7913  Dba:0x01800083
-------------------------------------------------------
5a424442 4107414e 414c5953          l ZBDBA.ANALYS

<16 bytes per line>

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

BBED> verify
DBVERIFY - Verification starting
FILE = /opt/oracle/oradata/orcl11g/zbdba01.dbf
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
BBED> 

刷新缓存:

alter system flush buffer_cache;
查看是否修改成功:
[email protected]>select * from emp;
     EMPNO ENAME                JOB                       MGR HIREDATE            SAL       COMM     DEPTNO
---------- -------------------- ------------------ ---------- ------------ ---------- ---------- ----------
      7499 ALLEN                SALESMAN                 7698 20-FEB-81          1600        300         30
      7521 WARD                 SALESMAN                 7698 22-FEB-81          1250        500         30
      7566 JONES                MANAGER                  7839 02-APR-81          2975                    20
      7654 MARTIN               SALESMAN                 7698 28-SEP-81          1250       1400         30
      7698 BLAKE                MANAGER                  7839 01-MAY-81          2850                    30
      7782 CLARK                MANAGER                  7839 09-JUN-81          2450                    10
      7788 ZBDBA                  KING                 PRESIDENT                     17-NOV-81          5000                    10
      7844 TURNER               SALESMAN                 7698 08-SEP-81          1500          0         30
      7876 ADAMS                CLERK                    7788 23-MAY-87          1100                    20
      7900 JAMES                CLERK                    7698 03-DEC-81           950                    30
      7902 FORD                 ANALYST                  7566 03-DEC-81          3000                    20
      7934 MILLER               CLERK                    7782 23-JAN-82          1300                    10

时间: 2024-10-07 01:12:25

使用bbed修改数据的相关文章

分享:bbed修改数据文件头推进scn与其他数据文件相同

场景简介: 物理copy表空间数据文件,数据库发生完全检查点,删除该表空间下的数据文件,使该表空间数据文件头的scn与其他数据文件不一致. 场景构造: 1.  创建测试表空间 [email protected]> create tablespace bbed datafile '/u01/app/oracle/oradata/orser/bbed01.dbf' size 10M autoextend on; Tablespace created 2.  物理cp数据文件(最好先做备份) [[em

oracle特殊恢复-bbed修改某个数据文件头

数据文件头中的scn要与控制文件中的scn一致,数据库才可以open,在open过程中我们可以通过bbed来修改某个数据文件头的scn,来欺骗oracle,来open库. 1.环境如下 使用Oracle 11gR2进行测试,具体版本为11.2.0.4 [email protected] SQL>select file#,name,checkpoint_change#,checkpoint_time from v$datafile;      FILE# NAME                 

使用bbed修改文件头,推进scn,找到offline drop的数据文件

最近处理了一起由于用户操作错误导致的数据库无法打开的情况. 用户数据库为windows 64bit,数据库版本为11.2.0.1,非归档模式.由于异常断电,数据库无法正常打开,而且经过用户的判断使用了错误的offline drop操作.导致数据库打开后,日志文件切换过多,无法使用recover命令. 因为中间没有做其他操作,所以接到case后,这里将受损的几个数据文件copy到linux下使用bbed进行修改,再copy回windows,成功跳过recover,打开了offline drop的数

利用BBED恢复数据文件头

转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/31018075 @@@@@@@利用BBED模拟损坏5文件1号块(文件头) BBED> copy file 4 block 4 to file 5 block 1 File: /u01/app/oracle/oradata/PROD/tp01.dbf (5) Block: 1 Offsets: 0 to 19 Dba:0x01400001 --------------------------

Cocos2d-x数据持久化-修改数据

修改数据时,涉及的SQL语句有insert.update和delete语句,这3个SQL语句都可以带参数.修改数据的具体步骤如下所示.(1) 使用sqlite3_open函数打开数据库.(2) 使用sqlite3_prepare_v2函数预处理SQL语句.(3) 使用sqlite3_bind_text函数绑定参数.(4) 使用sqlite3_step函数执行SQL语句.(5) 使用sqlite3_finalize和sqlite3_close函数释放资源.这与查询数据少了提取字段数据这个步骤,其他

跨服务器修改数据

说明: 两个服务器: 192.168.0.22   A 192.168.0.3     B 数据库备份在A上 数据库在B上 在A上写: exec sp_addlinkedserver   'ITSV2', ' ', 'SQLOLEDB', '服务器地址' exec sp_addlinkedsrvlogin  'ITSV2', 'false',null, '用户名', '密码' --SQL语句 insert into BookDB.dbo.T_ID(id)select  FenJian_ID fr

修改数据表——添加删除列

修改数据表的操作,无非就是列的增加.列的删除.约束的增加和约束的删除. 修改数据表 一.添加单列的语法结构 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [FIRST|AFTER col_name] 例如:在users表中添加一个age列,如果没有指定这个列的位置,那么它将位于所有列的最下边.如下图. FIRST的意思,将你写的这一列,放在最前头. AFTER的意思,将你写的这一列,放在指定列的后面. 若省略FIRST和

MySQL学习笔记 约束以及修改数据表

*** 约束保证数据的完整性和一致性 *** 约束分为表级约束和列级约束 *** 约束类型包括: NOT NULL(非空约束) PRIMARY KEY(主键约束) UNIQUE KEY(唯一约束) DEFAULT(默认约束) FOREIGN KEY(外键约束) 1.外键约束的要求解析 *** 父表和子表必须使用相同的存储引擎,而且禁止使用临时表. *** 数据表的存储引擎只能为InnoDB. *** 外键列和参照列必须具有相似的数据类型.其中数字的长度或是否有符号位必须相同:而字符的长度则可以不

Angularjs【监听数据的变化】和【如何修改数据】和【数据变化的传播】

一:监听数据的变化: 由于编译仅仅在启动引导时执行一次,这意味着我们的link函数只会被调用一次,那么, 如果数据变化,在界面上将不会有任何反馈,即界面和数据将变得不同步了. 这需要持续监听数据的变化. 好在AngularJS的scope对象可以使用$watch()方法,对建立在其上的变量的变化进行监听: watch(watchExpression,listener,[objectEquality]);watch方法要求传入三个参数: watchExpression - 要监听的表达式,比如:"