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

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

[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的结果一直,说明还原正确。

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

目录
相关文章
|
10月前
|
存储 调度 数据库
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
OceanBase存储引擎高级技术——内存数据落盘策略-合并和转储
763 0
|
Oracle 关系型数据库 数据库
[20180604]在内存修改数据(bbed).txt
[20180604]在内存修改数据(bbed).txt --//以前曾经做过在内存修改数据,通过oradebug poke命令修改内存信息,相关链接: --//http://blog.itpub.net/267265/viewspace-2124466/=>[20160904]在内存修改数据.txt --//今天测试看看是否通过bbed修改数据信息的情况.使用asmm,这样/dev/shm可以看到一个一个文件。
1085 0
|
Java
[20170406]查询占用内存情况.txt
[20170406]查询占用内存情况.txt --//昨天看了链接,http://www.dbaqhs.com/archives/35,发现脚本不对,显示KEEP buffer cache.
854 0
|
Oracle 关系型数据库 数据库
[20160906]修改口令在内存中.txt
[20160906]修改口令在内存中.txt --昨天测试了在内存中修改数据块的信息,突然想到如果我修改在内存中数据块sys.user$的口令的hash值,是否可以骗过系统认证,使 --用自己定制的口令。
811 0
|
数据库管理 关系型数据库 Oracle
[20160904]在内存修改数据.txt
[20160904]在内存修改数据.txt --测试一下,是否可以在内存crack数据块的数据. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER...
740 0
|
SQL Oracle 关系型数据库
[20140928]数据库建立在内存中.txt
[20140928]数据库建立在内存中.txt --单位正好到了几台新机器,内存128G. --测试一下dbca slient建立数据库,因为完成后可以丢弃,把数据库建立在内存中.
711 0
|
分布式数据库 C++ 编译器
使用SetUnhandledExceptionFilter转储程序崩溃时内存DMP注意事项
使用代码手工生成dmp文件 SetUnhandledExceptionFilter 为每个线程设置SetUnhandledExceptionFilter(MyCallBack),(必须在每个线程中启动时调用一次,否则造成无法进入回调函数中)这样该线程中发现未处理的 SEH 异常时就会进入到MyCallBack 回调中.
1057 0
|
9天前
|
存储 Java C++
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据
Java虚拟机(JVM)管理内存划分为多个区域:程序计数器记录线程执行位置;虚拟机栈存储线程私有数据,如局部变量和操作数;本地方法栈支持native方法;堆存放所有线程的对象实例,由垃圾回收管理;方法区(在Java 8后变为元空间)存储类信息和常量;运行时常量池是方法区一部分,保存符号引用和常量;直接内存非JVM规范定义,手动管理,通过Buffer类使用。Java 8后,永久代被元空间取代,G1成为默认GC。
22 2