[20180306]数据块检查和2.txt

简介: [20180306]数据块检查和2.txt --//昨天测试修改检查和偏移为0x0(偏移在16,17字节),在修改前面的15字节为0,一般数据块可以通过检查. --//链接:http://blog.

[20180306]数据块检查和2.txt

--//昨天测试修改检查和偏移为0x0(偏移在16,17字节),在修改前面的15字节为0,一般数据块可以通过检查.
--//链接:http://blog.itpub.net/267265/viewspace-2151524/

--//今天测试如果数据块在system表空间的情况下会是否可行.

1.环境:
SCOTT@book> @ &r/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

SCOTT@book> create table system.deptx tablespace system as select * from dept;
Table created.

SCOTT@book> select rowid,deptx.* from  system.deptx where deptno=10;
ROWID                  DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AAAWGYAABAAAAl5AAA         10 ACCOUNTING     NEW YORK

SCOTT@book> @ &r/rowid AAAWGYAABAAAAl5AAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     90520          1       2425          0   0x400979           1,2425               alter system dump datafile 1 block 2425

BBED> sum dba 1,2425
Check value for File 1, Block 2425:
current = 0x41f3, required = 0x41f3

--//当前检查和41f3.

2.关闭数据库修改看看:
SYS@book> shutdown immediate
Database closed.
Database dismounted.
ORACLE instance shut down.

--//修改对应信息:

BBED> p chkval_kcbh
ub2 chkval_kcbh                             @16       0x41f3

BBED> p flg_kcbh
ub1 flg_kcbh                                @15       0x04 (KCBHFCKV)

BBED> assign  kcbh.flg_kcbh=0x0
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
ub1 flg_kcbh                                @15       0x00 (NONE)

BBED> assign  kcbh.chkval_kcbh=0x0
ub2 chkval_kcbh                             @16       0x0000

BBED> sum dba 1,2425
Check value for File 1, Block 2425:
current = 0x0000, required = 0x0000

3.启动数据库看看:
SYS@book> startup
ORACLE instance started.
Total System Global Area  638910464 bytes
Fixed Size                  2255832 bytes
Variable Size             201327656 bytes
Database Buffers          427819008 bytes
Redo Buffers                7507968 bytes
Database mounted.
Database opened.

SYS@book> select rowid,deptx.* from  system.deptx where deptno=10;
ROWID                  DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AAAWGYAABAAAAl5AAA         10 ACCOUNTING     NEW YORK

SYS@book> alter system flush buffer_cache;
System altered.

BBED> set dba 1,2425
        DBA             0x00400979 (4196729 1,2425)

BBED> sum
Check value for File 1, Block 2425:
current = 0x0000, required = 0x0000

--//一样可行.看来理解存在问题.算一下这个时候检查和是多少.

BBED> set dba 1,2425
        DBA             0x00400979 (4196729 1,2425)

BBED> assign  kcbh.flg_kcbh=0x4
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
ub1 flg_kcbh                                @15       0x04 (KCBHFCKV)

BBED> sum
Check value for File 1, Block 2425:
current = 0x0000, required = 0x41f3

--//可以看出bbed的检查和算法,如果kcbh.flg_kcbh=0x0,估计跳过检查和计算.
--//2425*8192 = 19865600

$ xxd -c16 -g 2 -s 19865600 -l 8192 /mnt/ramdisk/book/system01.dbf | cut -c10-50 | xor.sh
..
xor result: F345

--//可以发现跳过了检查和检查.

BBED> set dba 1,2425
        DBA             0x00400979 (4196729 1,2425)

BBED> assign  kcbh.flg_kcbh=0x4
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
ub1 flg_kcbh                                @15       0x04 (KCBHFCKV)

BBED> assign  kcbh.chkval_kcbh=0x41f3
ub2 chkval_kcbh                             @16       0x41f3

--//修改回来.

$ xxd -c16 -g 2 -s 19865600 -l 8192 /mnt/ramdisk/book/system01.dbf | cut -c10-50 | xor.sh
...
xor result: 0

--//这样就正确了.也许对文件头不行,不测试了.
--//xor.sh脚本参考链接:http://blog.itpub.net/267265/viewspace-2134945/

目录
相关文章
文件或目录损坏且无法读取|4-17
文件或目录损坏且无法读取|4-17
|
测试技术 数据库 数据库管理
[20180306]数据块检查和.txt
[20180306]数据块检查和.txt --//如果数据块检查和不对,数据库无法读取相应块,会报错. --//检查和位于块偏移16字节处. ub1 flg_kcbh                            @15 ub2 chkval...
787 0
|
数据库管理
[20171228]关于数据块转储的问题.txt
[20171228]关于数据块转储的问题.txt --//昨天itpub上的问题,链接:http://www.itpub.net/thread-2095877-1-1.
924 0
|
Oracle 关系型数据库 数据库
[20171115]恢复数据文件块头4补充.txt
[20171115]恢复数据文件块头4补充.txt --// 昨天做了恢复数据文件块头,通过备份文件直接取出文件块头,覆盖原来的数据块,然后修复. --//补充几点: --1.
1064 0
|
Oracle 关系型数据库 数据库管理
[20171115]恢复数据文件块头3补充.txt
[20171115]恢复数据文件块头3补充.txt --// 昨天做了恢复数据文件块头,通过备份文件直接取出文件块头,覆盖原来的数据块,然后修复. --//补充几点: --1.
1141 0
|
SQL Oracle 关系型数据库
[20170623]利用传输表空间恢复部分数据.txt
[20170623]利用传输表空间恢复部分数据.txt --//昨天我测试使用传输表空间+dblink,上午补充测试发现表空间设置只读才能执行impdp导入原数据,这个也很好理解.
935 0
|
缓存 测试技术 数据库
[20170221]数据文件与文件系统缓存.txt
[20170221]数据文件与文件系统缓存.txt --昨天探究磁盘之间拷贝文件时很慢,发现一个小工具nocache,发现这个可以用来探究数据文件与文件系统缓存的问题,自己测试看看.
1050 0
|
Oracle 关系型数据库 Linux
[20161129]转储内存的内容还原成数据块.txt
[20161129]转储内存的内容还原成数据块.txt --昨天在做1128PAGETABLE SEGMENT HEADER损坏恢复,链接http://blog.itpub.net/267265/viewspace-2129195/ --在做还原成数据块时思路很乱,当时是一边做一边想,希望能找到好的方法,今天自己在重复做一次。
901 0
|
Oracle 关系型数据库 数据库
[20160413利用bbed修改跳过损坏的索引.txt
[20160413利用bbed修改跳过损坏的索引.txt --前一阵子做过利用bbed修改跳过损坏的索引,这次测试看看破坏索引SYS.I_OBJ1看看. 1.环境: SYS@book> @ &r/ver1 PORT_STRING             ...
1017 0