[20161129]转储内存的内容还原成数据块.txt

[20161129]转储内存的内容还原成数据块.txt

--昨天在做1128PAGETABLE SEGMENT HEADER损坏恢复,链接http://blog.itpub.net/267265/viewspace-2129195/
--在做还原成数据块时思路很乱,当时是一边做一边想,希望能找到好的方法,今天自己在重复做一次。

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> select rowid,dept.* from dept where rownum=1;
ROWID                  DEPTNO DNAME          LOC
------------------ ---------- -------------- -------------
AAAVRCAAEAAAACHAAA         10 ACCOUNTING     NEW YORK

SCOTT@book> @ &r/rowid AAAVRCAAEAAAACHAAA
    OBJECT       FILE      BLOCK        ROW ROWID_DBA            DBA                  TEXT
---------- ---------- ---------- ---------- -------------------- -------------------- ----------------------------------------
     87106          4        135          0  0x1000087           4,135                alter system dump datafile 4 block 135 ;

--通过转储的内容还原成数据块。

2.使用方法如下:
--//参考 http://blog.itpub.net/267265/viewspace-1659981/
alter session set events 'immediate trace name set_tsn_p1 level m';
ALTER SESSION SET EVENTS 'immediate trace name buffer level rdba';
--//注 m要ts#+1.

SCOTT@book> select ts# from sys.ts$ where name='USERS';
       TS#
----------
         4
SCOTT@book> @ &r/convrdba 4 135
RDBA16               RDBA
-------------- ----------
       1000087   16777351

--换1个数据块测试看看。

alter session set events 'immediate trace name set_tsn_p1 level 5';
ALTER SESSION SET EVENTS 'immediate trace name buffer level 0x1000087';

SCOTT@book> alter session set events 'immediate trace name set_tsn_p1 level 5';
Session altered.

SCOTT@book> ALTER SESSION SET EVENTS 'immediate trace name buffer level 0x1000087';
Session altered.

3.检查转储内容:
$ cat 4.135.bin
073A3C000 0000A206 01000087 000E0EF0 06010000  [................]
073A3C010 0000E273 00160001 00015442 000E0EE4  [s.......BT......]
073A3C020 1FE80000 00321F02 01000080 00020009  [......2.........]
073A3C030 00000364 00C167B0 002E009A 00002004  [d....g....... ..]
073A3C040 000E0EF0 00000000 00000000 00000000  [................]
073A3C050 00000000 00000000 00000000 00000000  [................]
073A3C060 00000000 00040100 001AFFFF 1F221F3C  [............<.".]
073A3C070 00001F22 1F7E0004 1F541F68 18891F3C  [".....~.h.T.<...]
073A3C080 17D1182D 172B177E 168516D8 15DF1632  [-...~.+.....2...]
..
073A3DFA0 0203012C 4F0A29C1 41524550 4E4F4954  [,....).OPERATION]
073A3DFB0 4F420653 4E4F5453 0203012C 53051FC1  [S.BOSTON,......S]
073A3DFC0 53454C41 49484307 4F474143 0203012C  [ALES.CHICAGO,...]
073A3DFD0 520815C1 41455345 06484352 4C4C4144  [...RESEARCH.DALL]
073A3DFE0 012C5341 0BC10203 4343410A 544E554F  [AS,......ACCOUNT]
073A3DFF0 08474E49 2057454E 4B524F59 0EF00601  [ING.NEW YORK....]

--前面073A3C000 以及   [................] 删除。
--编辑删除Repeat 3 times这行删除,实际上会vi很简单,先在前面一行按Y,然后按3P复制一样的3行。后面的操作类似(比如
--Repeat 142 times),不再讲解。(注我目前这个文件不存在这个问题)

$ cut -c11-45 4.135.bin > 4.135a.bin

--然后经过如下转换就ok了。
$ xxd -r -p  4.135a.bin | od -t x4 -v | cut -c9- | xxd -r -p  | md5sum
af2e621ca94aa6d52671462f29f933e1  -

--//注意仅仅将后面的|md5sum 替换成>文件名 就ok了。

$ dd if=/mnt/ramdisk/book/users01.dbf bs=8192 count=1 skip=135 2>/dev/null |   md5sum
af2e621ca94aa6d52671462f29f933e1  -

--//md5sum的结果一直,说明还原正确。

总结:
这样简单许多,不知道以后是否有用。

时间: 2024-07-30 11:05:47

[20161129]转储内存的内容还原成数据块.txt的相关文章

[20150929]检查数据块.txt

[20150929]检查数据块.txt --一般检查数据库的块是否存在损坏,使用dbv程序.例子: $ dbv file=/u01/app/oracle11g/oradata/test/system01.dbf DBVERIFY: Release 11.2.0.3.0 - Production on Tue Sep 29 07:48:28 2015 Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserv

[20150612]使用bvi查看数据块.txt

[20150612]使用bvi查看数据块.txt --编写一个简单的脚本实现bvi查看数据块,主要我现在喜欢使用bbed查看,而修改选择bvi. --通过例子来说明: SCOTT@test> select rowid,dept.* from dept ; ROWID                    DEPTNO DNAME          LOC ------------------ ------------ -------------- ------------- AABJVUAAEA

[20150513]人为破坏数据块.txt

[20150513]人为破坏数据块.txt --演示的目的,参考链接: http://www.askmaclean.com/archives/oracle-make-block-physical-corruption.html --不要在生产系统测试!!!!! 1.建立测试环境: SCOTT@test> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -

[20160531]windows下bbed修复corrupt数据块

[20160531]windows下bbed修复corrupt数据块.txt --昨天别人的问题,使用windows下的bbed修复corrupt数据块报错.我自己也重复测试看看: --bbed在windows的安装看: http://blog.itpub.net/267265/viewspace-2109019/ 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER --------

jpeg bmp 源代码-jpeg数据还原成bmp Arduino

问题描述 jpeg数据还原成bmp Arduino 用摄像头拍摄照片传输到单片机上用电脑看到接收到的数据是一组jpeg数据 FFD8开头FFD9结束 该如何还原成为bmp再进行处理 因为需要用单片机处理 所以求个源代码 解决方案 参考:http://download.csdn.net/detail/efancier/2565884 解决方案二: http://bbs.csdn.net/topics/360091379 解决方案三: 先对jpge进行解码,然后获取到图像的rgb数据区,将数据区拷贝

C#中将DataSet的内容写成XML时如何格式化字段数据

许多读者经常询问一个问题,那就是在将DataSet的内容写成XML时,如何格式化字段数据.最常见的需求,就是希望日期时间值与数值数据能够以所需的格式呈现于XML中.欲达此目的,可以采用下列两种作法: ◆使用XmlConvert类. ◆将一个XSLT转换套用至DataSet数据的XML表示. 程序范例 图 12-23所示是程序范例CH12_DemoForm018.cs的执行画面,我们发现,从DataSet写成XML的日期与薪资字段数据皆已采用我们所要求的格式.基本上,本范例是利用XmlConver

c++如何解析ActionScript3.0用socket发送的图片ByteArray还原成图片?

问题描述 c++如何解析ActionScript3.0用socket发送的图片ByteArray还原成图片? ActionScript3.0用socket给c++发送了一个图片的二进制数组ByteArray,c++收到数据,但是怎么解析这个接收到的数据,从而把它还原成图片? 原谅菜鸟新人没有银子-- 解决方案 你这个问题应该是怎么把图像的二进制数组数据转换为图像来存储,试试能否直接写成某一图像格式的文件,fwrite看看 解决方案二: socket接收到数据后,存入BYTE的数组中,然后你fop

在PHP语言中使用JSON和将json还原成数组的方法_php实例

在之前我写过php返回json数据简单实例,刚刚上网,突然发现一篇文章,也是介绍json的,还挺详细,值得参考.内容如下 从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码. 一.json_encode() <?php $arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?> 输出 {"a&

数据块转储及RDBA的转换

数据|转换 数据块转储及RDBA的转换 原文链接: http://www.eygle.com/internal/How_to_dump_datablock.htm Tuesday, 2004-08-31 17:51 Eygle  很多时候我们在进行进一步研究时需要转储(dump)Oracle的数据块,以研究其内容,Oracle提供了很好的方式,我们通过以下例子简单说明一下: [oracle@jumper udump]$ sqlplus "/ as sysdba"SQL*Plus: Re