当前位置:文档之家› Oracle数据恢复神器Dbseeker for Oracle Database

Oracle数据恢复神器Dbseeker for Oracle Database

第1版Dbseeker for Oracle Database使用说明书 (1)目录 (2)第1章 Dbseeker 的概要 (3)1.1 Dbseeker 的功能概要 (3)1.2 Dbseeker 的运行环境 (4)1.3 Dbseeker 支持的Oracle Dabase 版本 (4)1.4 Dbseeker 支持表类型 (5)1.5 Dbseeker 支持字段类型 (5)1.6 Dbseeker 支持语言字符集 (6)1.6 其它 (7)第2章 Dbseeker 的下载和启动 (8)2.1 下载Dbseeker和解压 (8)2.2 Windows 环境启动Dbseeker (8)2.3 Linux/Unix环境启动Dbseeker (8)第3章 Dbseeker实战场景 (9)实战场景3.1 数据字典完整,数据库表记录被误DELETE (9)实战场景3.2 数据字典损坏,数据库表记录被误DELETE (19)实战场景3.3 数据字典完整,数据库表被误TRUNCATE (26)实战场景3.4 数据字典不完整,数据库表被误TRUNCATE (28)实战场景3.5 数据字典完整,数据库表被误DROP (28)实战场景3.6 数据字典不完整,数据库表被误DROP (31)实战场景3.7 数据字典完整,数据库出现坏块,表无法查询 (31)实战场景3.8 数据字典完整损坏,数据库出现坏块,表无法查询 (31)第4章配置Dbseeker (32)第5章注册Dbseeker (32)Dbseeker for Oracle Database(以下简称为Dbseeker)是一款用Java语言开发的Oracle数据库恢复软件。

Dbseeker能够绕过Oracle读数据引擎,直接扫描数据文件的数据块, 分析数据块格式,读取数据库中的表记录。

因此,在由于各种原因引起的数据库不能打开或者数据库中的表被DROP,TRUNCATE,DELETE后,而且没有备份的情况下,使用Dbseeker能够及时找回数据表记录。

当相关人员由于一些人为错误,不慎DROP,TRUNCATE,DELETE了表数据。

首先要保持冷静,在大部分的情况下,数据还在数据文件里,Oracle database只是做了一些删除标记或者清除了表头的一些信息。

为了保证数据不会被覆盖,立即Offline表所属的表空间,或关闭相关的应用程序。

如果数据没有被覆盖,Dbseeker找回数据的成功率高达99.9%,但是如果数据被覆盖,又没有备份的情况下,神仙也爱莫能助。

数据库是数据的集合,数据库维护和管理用户的数据,用户数据表存在哪里,表的字段结构信息,表的索引信息,是数据库维护和管理用户数据的核心。

这些信息就是通过数据库的数据字典表来维护的,它们存放在SYSTEM 表空间中,数据库的数据字典汇集了数据库运行所需要的基础信息。

数据字典表完整当数据字典表完整时,推荐使用Dbseeker扫描数据字典表来恢复数据(实际上Dbseeker并不扫描全部的数据字典表,而是其中的一部分关键字典表的信息,例如OBJ$,TAB$,COL$,USER$等10多个表)。

扫描数据字典完成后,数据字典表的信息不会常驻内存,会保存在Dbseeker自带的小巧Apache Derby数据库中。

数据字典表完整,Dbseeker扫描表记录时, 首先会先从数据字典表COL$得到表的字段信息,再根据TAB$的信息定位到表的SEGMENT HEADER数据块,通过分析SEGMENT HEADER数据块,找到所有存储表记录的Data Block数据块,然后遍历表记录Data Block数据块,分析Data Block数据块格式,获取表的全部记录信息。

数据字典表不完整当数据字典表不完整时,推荐使用Dbseeker遍历扫描数据文件的所有数据块来恢复数据。

在扫描数据文件的每个数据块时,分析结果保存到Apache Derby数据库。

扫描完成后,提供两种模式得到表记录信息。

■Seek all segment header该模式会检索出保存在Derby数据库中的所有数据块类型为SEGMENT HEADER的列表。

适用于SEGMENT HEADER数据块没有损坏,而且数据文件完整的情况。

(例如表的记录保存在3个数据文件里,3个数据文件都没有损坏。

)■Seek all data block该模式会检索出保存在Derby数据库中的所有数据块类型为Data Block的列表。

适用于SEGMENT HEADER数据块已经损坏,或者数据文件缺少的情况。

(例如表的记录保存在3个数据文件里,2个数据文件正常,其中一个已经丢失。

)由于数据字典表不完整,无法从COL$得到表的字段信息,Dbseeker会取样表记录条数最多的一个Data Block数据块,智能解析字段类型。

解析表字段类型后,遍历表所有的Data Block类型的数据块,获取表的全部记录信息。

Dbseeker找到数据表记录后,支持两种方法导入数据库。

■通过生成的SQL*loader文件Dbseeker可以为表生成SQL*loader的控制文件和数据文件,以及建表SQL文件,通过ORACLE的数据加载工具SQL*loader加载到目标数据库。

■通过Dbseeker直接导入目标数据库Dbseeker支持通过JDBC建立数据库连接,直接把表记录数据导入到目标数据库。

Dbseeker能正常运行在Java 1.42以上的环境。

推荐运行环境为Java 1.6以上(64-Bit),以获得最佳的运行性能。

Dbseeker支持LOB字段BasicFiles和SecureFiles存储结构。

但是不支持SecureFile去重复,压缩,加密功能。

Dbseeker利用Java强大的国际化功能,内置了常用的几十种常见的数据库字符集,包括中文,日语,韩语,英语,法语,德语,拉丁等世界上大部分的常用语系。

如果要恢复的数据库字符集没有内置,可以通过配置config目录下CHARACTERSET.xml文件来获得支持。

■Characterset 数据库字符集■Charset java.nio.charset对应编码Java支持的编码列表可以参照下面的网址。

https:///javase/8/docs/technotes/guides/intl/encoding.doc.html?vm=r&s=1■支持BIG ENDIAN和LITTLE ENDIAN,自动识别数据文件的ENDIAN格式■自动识别数据文件的BLOCKSIZE■支持行迁移/行链接■不支持使用Oracle TDE加密的数据■暂时不支持ASM格式的数据文件从/download可以获取最新的Dbseeker软件包。

由于Java是一种可以跨平台应用软件的面向对象的程序设计语言,Dbseeker可以通用在各种不同的操作系统平台。

Dbseeker会在解压目录下生成一些目录和文件,启动前需要确认执行用户对解压后的目录有足够的执行和写入权限。

解压下载包dbseeker.zip后,双击执行启动脚本。

■Java 32位运行环境,执行dbseeker_32bit.bat■Java 64位运行环境,执行dbseeker_64bit.bat显示Dbsseker恢复向导界面。

解压下载包dbseeker.zip后,执行启动脚本。

■Java 32位运行环境,执行dbseeker_32bit.sh■Java 64位运行环境,执行dbseeker_64bit.sh显示Dbsseker恢复向导界面。

本实战场景的Dbseeker软件运行在Windows 7环境。

本实战场景的测试Oracle数据库运行在linux环境,生成测试数据后,从linux下载数据文件到本地Windows 7环境。

生成的SQL*loader文件数据FTP回传到linux环境。

Dbseeker能够在一个平台上恢复其他平台上的Oracle数据库数据,比如可以将Linux系统上的Oracle 数据文件复制到Windows系统上,然后在Windows平台使用Dbseeker来恢复。

本实战场景模拟数据字典完整的情况下,表记录被删除后,如何通过Dbseeker找回删除的表记录写入数据库。

■新建表MYDELETEDTABLE,生成测试记录。

■为了能够校验Dbseeker找回的数据的正确性,复制MYDELETEDTABLE到MYDELETEDTABLE2。

■DELETE表MYDELETEDTABLE全部记录。

■使用Dbseeker找回数据,生成的SQL*loader文件,导入数据库后,和MYDELETEDTABLE2表校验正确性。

■使用Dbseeker找回数据,通过Dbseeker直接导入目标数据库后,和MYDELETEDTABLE2表校验正确性。

1.启动Dbseeker恢复向导界面,点击[Next]按钮。

2.选择[Yes,The Oracle data dictionary in the system tablespace is intact.],点击[Next]按钮。

3.点击[Choose Files] 按钮。

4.选择数据文件。

如果是数据字典完整的恢复模式,必须选择系统表空间的数据文件和需恢复表所在的数据文件。

如果不清楚恢复表具体存储在哪个数据文件,请全部选择所有的数据文件。

5.填入数据文件的OFFSET信息,点击[Start]按钮。

什么是数据文件的OFFSET?在一些OS上,在裸设备上的文件的开头是被OS使用的。

这些存储空间被叫做RAW OFFSET。

Dbseeker扫描数据文件的时候要跳过含有OFFSET的字节。

目前只有AIX和Tru64系统的裸设备存在OFFSET。

在AIX平台下,可以使用$ORACLE_HOME/bin路径下的dbfsize命令确认裸设备是否包含OFFSET。

Windows和LINUX环境下的数据文件不用考虑OFFSET,默认设置为0。

6.Dbseeker初始化后,开始扫描关键字典表的信息。

7.扫描关键字典表完成后,显示Dbseeker的主界面。

Dbseeker主界面显示以下数据库信息。

∙DBID∙DBNAME∙数据库字符集∙数据库国家字符集∙被选择的数据文件的路径,BLOCK SIZE 和OFFSET8.找到需要恢复的表,点击右键,点击[Desc Table]查看表的字段信息。

●点击[Desc Table]查看数据表的字段信息。

●显示如下图所示的MYDELETEDTABLE表字段信息。

确认列表中是否存在Dbseeker不支持的字段类型(Unknown)。

如果有Unknown字样的字段类型,恢复数据时有可能会发生问题。

9.找到需要恢复的表,点击右键,点击[Seek Table]。

相关主题