06 使用bbed修复update的数据--01
场景1
表t3
SQL> select * from t3;
ID NAME
---------- --------------------
1 aaa
2 bbbb
SQL> update t3 set name='cccc' where name='bbbb'; ###这里更新值长度相同
1 row updated. SQL> commit;
Commit complete. SQL> alter system flush buffer_cache;
System altered.
BBED> set file 5 block 2207
FILE# 5
BLOCK# 2207
BBED> dump /v offset 8000 count 200
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8000 to 8191 Dba:0x0140089f
-------------------------------------------------------
46004700 48004900 4a004b00 4c004d00 l F.G.H.I.J.K.L.M.
4e004f00 50005100 52005300 54005500 l N.O.P.Q.R.S.T.U.
56005700 58005900 5a005b00 5c005d00 l V.W.X.Y.Z.[.\.].
5e005f00 60006100 62006300 64006500 l ^._.`.a.b.c.d.e.
66006700 68006900 6a006b00 6c006d00 l f.g.h.i.j.k.l.m.
6e006f00 70007100 72007300 74007500 l n.o.p.q.r.s.t.u.
76007700 78007900 7a007b00 7c007d00 l v.w.x.y.z.{.|.}.
7e007f00 80008100 82008300 84008500 l ~...............
86008700 88008900 8a008b00 8c008d00 l ................
8e008f00 90009100 92009300 94009500 l ................
96009700 9800902c 020202c1 03046363 l .......,..cc
63632c00 0202c102 03616161 0106c52c l cc,...aaa..ì ####把bbbb的值更新为cccc 2c1030463636363---cccc
2c10203616161--aaa BBED> p kdbr
sb2 kdbr[] @118 8078
sb2 kdbr[] @120 8067 BBED> p *kdbr[]
rowdata[]
----------
ub1 rowdata[] @8167 0x2c BBED> x/rncccccc
rowdata[] @8167 =8067+100
----------
flag@8167: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8168: 0x02
cols@8169: 2 col 0[] @8170: 2
col 1[] @8173: cccc ####把bbbb的值更新为cccc
更新前后值的长度相同,在原位置进行更新

例2 修改值之后的长度大于之前的值长度
SQL> select * from t3;
ID NAME
---------- --------------------
1 aaa
2 cccc SQL> update t3 set name='dddddd' where name='cccc'; ###更新的值的长度变长
1 row updated. SQL> commit;
Commit complete. SQL> alter system flush buffer_cache;
System altered.
BBED> set file 5 block 2207
FILE# 5
BLOCK# 2207 BBED> p kdbr
sb2 kdbr[] @118 8078
sb2 kdbr[] @120 8054 BBED> p *kdbr[]
rowdata[]
----------
ub1 rowdata[] @8154 0x2c BBED> x/rncccccc
rowdata[] @8154
----------
flag@8154: 0x2c (KDRHFL, KDRHFF, KDRHFH)
lock@8155: 0x01
cols@8156: 2 col 0[] @8157: 2 ###id=2
col 1[] @8160: dddddd ##值更新为dddddd BBED> dump /v offset 8000 count 200
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8000 to 8191 Dba:0x0140089f
-------------------------------------------------------
46004700 48004900 4a004b00 4c004d00 l F.G.H.I.J.K.L.M.
4e004f00 50005100 52005300 54005500 l N.O.P.Q.R.S.T.U.
56005700 58005900 5a005b00 5c005d00 l V.W.X.Y.Z.[.\.].
5e005f00 60006100 62006300 64006500 l ^._.`.a.b.c.d.e.
66006700 68006900 6a006b00 6c006d00 l f.g.h.i.j.k.l.m.
6e006f00 70007100 72007300 74007500 l n.o.p.q.r.s.t.u.
76007700 78007900 7a007b00 7c007d00 l v.w.x.y.z.{.|.}.
7e007f00 80008100 82008300 84008500 l ~...............
86008700 88008900 8a008b00 8c008d00 l ................
8e008f00 90009100 92002c01 0202c103 l ..........,..
06646464 6464642c 000202c1 03046363 l .dddddd,...cc ###这里cccc的值还在,新的值dddddd放在后面的位置
63632c00 0202c102 03616161 0106462d l cc,...aaa..F-
<16 bytes per line> SQL> select dump('d','') from dual;
DUMP('D','')
----------------
Typ=96 Len=1: 64 SQL> select * from t3;
ID NAME
---------- --------------------
1 aaa
2 dddddd 2c10306646464646464---dddddd ###新增加记录
2c1030463636363---cccc ###修改之后,这个值没变
2c10203616161 ---aaa

测试通过bbed把dddddd的值修改回ccccc,而不使用update命令
原来cccc的位置
SQL> select to_char(8067,'xxxxxxxxxxxxxx') from dual; TO_CHAR(8067,'X
---------------
1f83
SQL> select to_char(8054,'xxxxxxxxxx') from dual; TO_CHAR(805
-----------
1f76
新值dddddd的位置 76,修改为旧值cccc位置83
BBED> modify /x 83 offset 120
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 120 to 319 Dba:0x0140089f
------------------------------------------------------------------------
831f0000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 <32 bytes per line> BBED> sum apply
Check value for File 5, Block 2207:
current = 0x2191, required = 0x2191

修改事务槽
BBED> dump /v offset 8168
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8168 to 8191 Dba:0x0140089f
-------------------------------------------------------
000202c1 03046363 63632c00 0202c102 l ...cccc,.. ####cccc事务槽位00
03616161 0106462d l .aaa..F- <16 bytes per line>
BBED> dump /v offset 8155
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8155 to 8191 Dba:0x0140089f
-------------------------------------------------------
010202c1 03066464 64646464 2c000202 l ...dddddd,... ####dddddd事务槽的值为01
c1030463 6363632c 000202c1 02036161 l.cccc,...aa
61010646 2d l a..F- <16 bytes per line> BBED> modify /x 00 offset 8155 ##修改dddddd事务槽为00
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8155 to 8191 Dba:0x0140089f
------------------------------------------------------------------------
000202c1 03066464 64646464 2c000202 c1030463 6363632c 000202c1 02036161
61010646 2d <32 bytes per line> BBED> sum apply
Check value for File 5, Block 2207:
current = 0x2091, required = 0x2091 BBED> modify /x 01 offset 8168 ##修改cccc事务槽为01
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 8168 to 8191 Dba:0x0140089f
------------------------------------------------------------------------
010202c1 03046363 63632c00 0202c102 03616161 0106462d <32 bytes per line> BBED> sum apply
Check value for File 5, Block 2207:
current = 0x2090, required = 0x2090

有效空间设置(这一块的值和位置没有搞明白)
BBED> modify /x 5c offset 110
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 110 to 309 Dba:0x0140089f
------------------------------------------------------------------------
5c1f6b1f 00000200 8e1f831f 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 <32 bytes per line> BBED> modify /x 5c offset 112
File: /u01/app/oracle/oradata/orcl/test01.dbf (5)
Block: 2207 Offsets: 112 to 311 Dba:0x0140089f
------------------------------------------------------------------------
5c1f0000 02008e1f 831f0000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
00000000 00000000 <32 bytes per line> BBED> sum apply
Check value for File 5, Block 2207:
current = 0x2090, required = 0x2090 BBED> verify
DBVERIFY - Verification starting
FILE = /u01/app/oracle/oradata/orcl/test01.dbf
BLOCK = 2207 Block Checking: DBA = 20973727, Block Type = KTB-managed data block
data header at 0x7f7c53a15264
kdbchk: the amount of space used is not equal to block size
used=43 fsc=0 avsp=8028 dtl=8088
Block 2207 failed with check code 6110 DBVERIFY - Verification complete Total Blocks Examined : 1
Total Blocks Processed (Data) : 1
Total Blocks Failing (Data) : 1
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 t3; ##没有使用update命令,只用bbed把dddddd的值修改回cccc ID NAME
---------- --------------------
1 aaa
2 cccc
06 使用bbed修复update的数据--01的更多相关文章
- 06 使用bbed修复delete的数据--01
06 使用bbed修复delete的数据--01 根据rowid查看数据文件和block号 SYS@ orcl ; ROWID ID NAME FILE# BLOCK# --------------- ...
- 06 使用bbed提交delete的数据--01
使用bbed模拟delete提交操作 --session 1 TEST@ orcl )); Table created. TEST@ orcl ,'AAAAA'); row created. TEST ...
- 使用bbed编辑研究oracle数据块结构
bbed是随oracle软件公布的一款数据块查看和编辑工具,作为一款内部工具.bbed的功能很强大,可是假设使用不当可能给数据库造成无法挽回的损失.因此.我们建议在使用bbed改动数据块前备份被改动的 ...
- 04 bbed修复system文件头损坏
04 bbed修复system文件头损坏 1 启动数据库,查看trace,在mount到open, SQL> startup mount; ORACLE instance started. To ...
- 利用BBED恢复UPDATE改动前的值
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/30615151 实验步骤例如以下: 1.创建表guo_test1 gyj@PROD> ...
- phalcon: update修改数据却变成了insert插入数据
phalcon: 在对表进行操作是,update修改数据却变成了insert插入数据. 发现,update的时,无论怎么加where都会变成了insert插入数据. 检查了一下表,原来是表没有 主键引 ...
- SQL中使用UPDATE更新数据时一定要记得WHERE子句
我们在使用 SQL 中的 UPDATE 更新数据时,一般都不会更新表中的左右数据,所以我们更新的数据的 SQL 语句中会带有 WHERE 子句,如果没有WHERE子句,就回更新表中所有的数据,在 my ...
- SQL中CRUD C——create 添加数据 R——read 读取数据 U——update 修改数据 D——delete 删除数据
在SQL server中对数据库的操作: 删除表:drop table 表名修改表:alter table 表名 添加列add 列名 列类型alter table 表名 drop column 列名 ...
- update改数据详解
update修改数据的要素 : 改哪张表? 改哪几列的值? 分别改成什么值? 在哪些行生效?(这个很重要,否则所有行都会受影响) mysql> update class ; where 表达式 ...
随机推荐
- JS 的JSON对象
知识点一: 循环对象 for(x in Obj) x表示属性,Obj.x表示属性的值. 修改值 Obj.x = " "//直接修改 删除对象属性 delete Obj.x va ...
- XIB约束布局问题(button)
button默认不给宽度:系统Xib自动适配,最小宽度30.在使用宽度计算时,无法小于这个值
- Spring基础06——依赖注入的一些细节
1.字面值 可用字符串表示的值,可以通过<value>元素标签或value属性进行注入.基本数据类型及其封装类,String类等类型都可以采取字面值注入的方式.若字面值包含特殊字符,可以使 ...
- python打包命令
打包成exe方法 (1)切换到该文件夹 (2)pyinstaller -F py文件 (py文件要英文才行) -F 生成单个可执行文件 -w 去掉控制台窗口 -p 自定义需要加载的类路径 -i 可执行 ...
- vi文本编辑器的使用
1.1.模式 编辑模式 输入模式 末行模式 1.2.常用命令 vi file 直接打开,不能修改,光标在行首 vi +n file 直接打开,不能修改,光标在第n行 vi + file 直接打开,不能 ...
- 牛客练习赛53E 老瞎眼 pk 小鲜肉(线段树)
链接:https://ac.nowcoder.com/acm/contest/1114/E来源:牛客网题目:老瞎眼有一个长度为 n 的数组 a,为了为难小鲜肉,他准备了 Q 次询问,每次给出 一个区间 ...
- 给Java新手的一些建议----Java知识点归纳(J2EE and Web 部分)
J2EE(Java2 Enterprise Edition) 刚出现时一般会用于开发企业内部的应用系统,特别是web应用,所以渐渐,有些人就会把J2EE和web模式画上了等号.但是其实 J2EE 里面 ...
- node项目实战-用node-koa2-mysql-bootstrap搭建一个前端论坛
前言 在学习了koa2和express并写了一些demo后,打算自己写一个项目练练手,由于是在校生,没什么好的项目做,即以开发一个前端论坛为目标,功能需求参照一下一些社区拟定,主要有: 登录注册 个人 ...
- 前端之JQuery:JQuery基本语法
jQuery基本语法 一.jQuery基础1.为什么要用jquery? 写起来简单,省事,开发效率高,兼容性好2.什么是jQuery? jQuery是一个兼容多浏览器的JavaScript库(类似py ...
- Spring5最新完整教程IDEA版【通俗易懂2019.11月】
1.Maven找包: spring-webmvc spring-jdbc 2.Spring的本质是控制反转,依靠依赖注入来实现.以一个servcie对象为例,即是service暴露注入接口(构造,se ...