[20190124]bbed恢复数据遇到延迟块清除的问题.txt --//最近使用bbed做一个恢复测试,遇到一个问题.以前我的测试如果修改删除flag从0x3c=>0x2c,sum apply后,使用verify提示类似如下: BBED> verify DBVERIFY - Verification starting FILE = /mnt/ramdisk/book/users01.dbf BLOCK = 523 Block Checking: DBA = 16777739, Block Type = KTB-managed data block data header at 0x7fddbce4127c kdbchk: the amount of space used is not equal to block size used=44 fsc=9 avsp=8020 dtl=8064 Block 523 failed with check code 6110 --//如果偷懒,可以跳过这步.但是如果遇到提交时数据块不在缓存或者更新涉及的块太多,可能会出现许多块不做块清除,oracle执行的是 --//快速块清除操作.这样一些块在下一次touch时才修改对应ITL操以及对应记录的lock信息才会更新. --//对于这样的块,恢复时恢复会遇到什么问题呢?通过例子说明问题. 1.环境: SCOTT@book> @ ver1 PORT_STRING VERSION BANNER ------------------------------ -------------- -------------------------------------------------------------------------------- x86_64/Linux 2.4.xx 11.2.0.4.0 Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production 2.建立测试环境: SCOTT@book> create table t as select rownum id,'test' name from dual connect by level<=2; Table created. SCOTT@book> select rowid,t.* from t; ROWID ID NAME ------------------ ---------- -------------------- AAAWPYAAEAAAAILAAA 1 test AAAWPYAAEAAAAILAAB 2 test SCOTT@book> @ rowid AAAWPYAAEAAAAILAAA OBJECT FILE BLOCK ROW ROWID_DBA DBA TEXT ---------- ---------- ---------- ---------- -------------------- -------------------- ---------------------------------------- 91096 4 523 0 0x100020B 4,523 alter system dump datafile 4 block 523 ; SCOTT@book> delete from t where id=1; 1 row deleted. SCOTT@book> alter system flush buffer_cache; System altered. SCOTT@book> alter system flush buffer_cache; System altered. --//注:一定要确定对于数据块信息已经刷新到磁盘.IMU环境有时候奇怪,脏块有时候也不会写盘. SYS@book> @ bh 4 523 HLADDR DBARFIL DBABLK CLASS CLASS_TYPE STATE TCH CR_SCN_BAS CR_SCN_WRP CR_UBA_FIL CR_UBA_BLK CR_UBA_SEQ BA OBJECT_NAME ---------------- ------- ------ ----- ---------- ----- --- ---------- ---------- ---------- ---------- ---------- ---------------- ----------- 000000008538CA18 4 523 1 data block free 0 0 0 0 0 0 0000000073D1C000 T 000000008538CA18 4 523 1 data block free 0 0 0 0 0 0 0000000073D22000 T SCOTT@book> commit ; Commit complete. 3.使用bbed恢复看看: BBED> set dba 4,523 DBA 0x0100020b (16777739 4,523) BBED> x /rnc *kdbr[0] rowdata[11] @8177 ----------- flag@8177: 0x3c (KDRHFL, KDRHFF, KDRHFD, KDRHFH) lock@8178: 0x02 cols@8179: 0 --//使用ITL槽2.看看ITL槽2(从0开始)的情况: BBED> p ktbbh.ktbbhitl[1] struct ktbbhitl[1], 24 bytes @68 struct ktbitxid, 8 bytes @68 ub2 kxidusn @68 0x000a ub2 kxidslt @70 0x0013 ub4 kxidsqn @72 0x00005816 struct ktbituba, 8 bytes @76 ub4 kubadba @76 0x00c0028e ub2 kubaseq @80 0x10d5 ub1 kubarec @82 0x0f ub2 ktbitflg @84 0x0001 (NONE) union _ktbitun, 2 bytes @86 sb2 _ktbitfsc @86 9 ub2 _ktbitwrp @86 0x0009 ub4 ktbitbas @88 0x00000000 --//可以发现ktbitflg=0x0001,表示没有提交.ktbitbas=0x00000000,也就是没有scn相关信息写入. BBED> assign offset 8177=0x2c; Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y ub1 rowdata[0] @8177 0x2c BBED> x /rnc *kdbr[0] rowdata[11] @8177 ----------- flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8178: 0x02 cols@8179: 2 col 0[2] @8180: 1 col 1[4] @8183: Test BBED> sum apply Check value for File 4, Block 523: current = 0xdcbe, required = 0xdcbe BBED> verify DBVERIFY - Verification starting FILE = /mnt/ramdisk/book/users01.dbf BLOCK = 523 Block Checking: DBA = 16777739, Block Type = KTB-managed data block data header at 0x7fddbce4127c kdbchk: the amount of space used is not equal to block size used=44 fsc=9 avsp=8020 dtl=8064 Block 523 failed with check code 6110 --//我以前测试提到过这样恢复,读取是没有问题,虽然verify时包如上的错误. SCOTT@book> alter system flush buffer_cache; System altered. SCOTT@book> select rowid,t.* from t; ROWID ID NAME ------------------ ---------- -------------------- AAAWPZAAEAAAAILAAA 1 Test AAAWPZAAEAAAAILAAB 2 Test SCOTT@book> alter system flush buffer_cache; System altered. BBED> x /rnc dba 4,523 *kdbr[0] rowdata[11] @8177 ----------- flag@8177: 0x2c (KDRHFL, KDRHFF, KDRHFH) lock@8178: 0x00 cols@8179: 2 col 0[2] @8180: 1 col 1[4] @8183: Test BBED> p dba 4,523 ktbbh.ktbbhitl[1] struct ktbbhitl[1], 24 bytes @68 struct ktbitxid, 8 bytes @68 ub2 kxidusn @68 0x000a ub2 kxidslt @70 0x0013 ub4 kxidsqn @72 0x00005816 struct ktbituba, 8 bytes @76 ub4 kubadba @76 0x00c0028e ub2 kubaseq @80 0x10d5 ub1 kubarec @82 0x0f ub2 ktbitflg @84 0xa000 (KTBFUPB, KTBFCOM) union _ktbitun, 2 bytes @86 sb2 _ktbitfsc @86 3 ub2 _ktbitwrp @86 0x0003 ub4 ktbitbas @88 0x1774676a --//OK,可以发现没有问题.即使现在还报错: BBED> verify dba 4,523 DBVERIFY - Verification starting FILE = /mnt/ramdisk/book/users01.dbf BLOCK = 523 Block Checking: DBA = 16777739, Block Type = KTB-managed data block data header at 0x13efe7c kdbchk: the amount of space used is not equal to block size used=44 fsc=0 avsp=8029 dtl=8064 Block 523 failed with check code 6110 --//如果使用system表空间呢?下一篇测试看看.
[20190124]bbed恢复数据遇到延迟块清除的问题.txt
来源:这里教程网
时间:2026-03-03 12:54:25
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- [20190118]toad下如何调试存储过程和函数.txt
[20190118]toad下如何调试存储过程和函数.txt
26-03-03 - 不删内容 减小Word文件体积小技巧
不删内容 减小Word文件体积小技巧
26-03-03 - Word文档内容的选取技巧
Word文档内容的选取技巧
26-03-03 - rac下修改内存配置后数据库无法启动问题
rac下修改内存配置后数据库无法启动问题
26-03-03 - Word2007显示域结果技巧
Word2007显示域结果技巧
26-03-03 - RMAN命令LIST操作总结
RMAN命令LIST操作总结
26-03-03 - Oracle各版本补丁的支持周期
Oracle各版本补丁的支持周期
26-03-03 - Flashback database必须要有之前的archivelog吗?
- Oracle11gR2 Smart Flash Cache测试说明
Oracle11gR2 Smart Flash Cache测试说明
26-03-03 - RMAN -- Frequently Asked Question (FAQ) (Doc ID 469777.1)
