设为首页 加入收藏

TOP

利用BBED恢复非归档模式下OFFLINE数据文件(六)
2015-07-24 11:04:46 来源: 作者: 【 】 浏览:3
Tags:利用 BBED 恢复 归档 模式 OFFLINE 数据 文件
6e6a --数据文件头的SCN
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x331c12b8
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x00000008 --数据文件当前写的redolog sequence
ub4 kcrbabno @504 0x00000ab9 --数据文件当前写的redolog block number
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00


BBED> p kcvfhcpc
ub4 kcvfhcpc @140 0x00000005


BBED> p kcvfhccc
ub4 kcvfhccc @148 0x00000004


--和datafile 7做比较
BBED> set file 7
FILE# 7


BBED> p kcvfhckp
struct kcvfhckp, 36 bytes @484
struct kcvcpscn, 8 bytes @484
ub4 kscnbas @484 0x00086fcf
ub2 kscnwrp @488 0x0000
ub4 kcvcptim @492 0x331c159d
ub2 kcvcpthr @496 0x0001
union u, 12 bytes @500
struct kcvcprba, 12 bytes @500
ub4 kcrbaseq @500 0x0000000b
ub4 kcrbabno @504 0x00000002
ub2 kcrbabof @508 0x0010
ub1 kcvcpetb[0] @512 0x02
ub1 kcvcpetb[1] @513 0x00
ub1 kcvcpetb[2] @514 0x00
ub1 kcvcpetb[3] @515 0x00
ub1 kcvcpetb[4] @516 0x00
ub1 kcvcpetb[5] @517 0x00
ub1 kcvcpetb[6] @518 0x00
ub1 kcvcpetb[7] @519 0x00


BBED> p kcvfhcpc
ub4 kcvfhcpc @140 0x0000001b


BBED> p kcvfhccc
ub4 kcvfhccc @148 0x0000001a


其实这里kcvfhcpc和kcvfhccc可以不必理会,要修改的就2个地方
只需要把datafile 8中offset 484和500的值改成和datafile 7一致,就ok了


--用dump命令查看datafile 7的存储值
BBED> dump /v offset 484 count 16
File: /u01/app/oracle/oradata/ora10g/zlm02.dbf (7)
Block: 1 Offsets: 484 to 499 Dba:0x01c00001
-------------------------------------------------------
cf6f0800 0000f1b7 9d151c33 01000000 l ?....穹...3....


<16 bytes per line>


注意,这里存储的格式与之前通过p kcvfhckp查看到的值是相反的


--通过以下视图可以获得endian值:
SQL> set lin 130
SQL> col platform_name for a40
SQL> select platform_id,platform_name,endian_format from v$db_transportable_platform;


PLATFORM_ID PLATFORM_NAME ENDIAN_FORMAT
----------- ---------------------------------------- --------------
7 Microsoft Windows IA (32-bit) Little
10 Linux IA (32-bit) Little
5 HP Tru64 UNIX Little
11 Linux IA (64-bit) Little
15 HP Open VMS Little
8 Microsoft Windows IA (64-bit) Little
13 Linux 64-bit for AMD Little
12 Microsoft Windows 64-bit for AMD Little
17 Solaris Operating System (x86) Little


Big-Endian和Little-Endian的定义如下:
a) Little-Endian 低位字节排放在内存的低地址端,高位字节排放在内存的高地址端。
b) Big-Endian 高位字节排放在内存的低地址端,低位字节排放在内存的高地址端。


BBED> dump /v offset 500 count 16
File: /u01/app/oracle/oradata/ora10g/zlm02.dbf (7)
Block: 1 Offsets: 500 to 515 Dba:0x01c00001
-------------------------------------------------------
0b000000 02000000 1000e1bf 02000000 l ..........峥....


<16 bytes per line>

BBED> modify /x cf6f0800 dba 8,1 offset 484
BBED-00209: invalid number (cf6f0800)

要修改的值为8位4字节十六进制,一起写会提示非法值,可以先修改前3个字节


BBED> modify /x cf6f08 dba 8,1 offset 484
Warning: contents of previous BIFILE will be lost. Proceed? (Y/N) y
File: /u01/app/oracle/oradata/ora10g/zlm_test01.dbf (8)
Block: 1 Offsets: 484 to 499 Dba:0x02000001
------------------------------------------------------------------------
cf6f0800 00000000 b8121c33 01000000


<32 bytes per line>

--再次验证一下
BBED> d /v dba 8,1 offset 484 count 16 --d就是dump,m就是modify,BBED的命令可以用首字母缩写
File: /u01/app/oracle/oradata/ora10g/zlm_test01.dbf (8)
Block: 1 Offsets: 484 to 499 Dba:0x02000001
-------------------------------------------------------
cf6f0800 00000000 b8121c3
首页 上一页 3 4 5 6 7 下一页 尾页 6/7/7
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇intent对于电话和浏览器调用 下一篇java.util.date和java.sql.date在..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Redis 分布式锁全解 (2025-12-25 17:19:51)
·SpringBoot 整合 Red (2025-12-25 17:19:48)
·MongoDB 索引 - 菜鸟 (2025-12-25 17:19:45)
·What Is Linux (2025-12-25 16:57:17)
·Linux小白必备:超全 (2025-12-25 16:57:14)