使用PRM-DUL进行ORACLE数据库恢复
在D公司中,一位SA系统管理员不小心误删除了某个数据库的SYSTEM表空间所在的数据文件,导致整个数据库无法打开且数据无法获取。在没有备份的情况下,可以使用PRM-DUL工具来接近100%的恢复数据。
选择Non-Dictionary模式
当使用No-dictionary模式时,用户需要指定字符集和国家字符集,因为丢失了SYSTEM表空间后,数据库的字符集信息无法正常获得,所以需要用户输入正确的字符集设置,并安装必要的语言包。只有这样才能保证在No-Dictionary模式下正常抽取多国语言。
执行SCAN操作
与第一个场景类似,输入所有可用的数据文件(不包括临时文件),并设置正确的Block Size和OFFSET后,点击SCAN按钮。SCAN操作的作用是扫描所有数据文件上的Segment Header,并记录到SEG.DAT和EXT.DAT中。在ORACLE中,一个非分区表或一个分区表的每个分区都对应着一个SEGMENT HEADER数据段头。通过扫描EXTENT MAP信息,可以获取到该表上的全部记录。
例如,如果一张非分区的单表存放在由两个数据文件组成的表空间上,其中SEGMENT HEADER和一半的数据存放在A数据文件上,另一半数据存放在B数据文件上。但由于某些原因,SYSTEM表空间和存放SEGMENT HEADER的A数据文件都丢失了,只剩下B数据文件。此时,如果希望仅恢复B数据文件上该表的数据,则不能依赖于SEGMENT HEADER,而只能依赖于从B数据文件上扫描的盘区图EXTENT MAP信息。为了同时满足基于SEGMENT HEADER和EXTENT MAP数据的No-Dictionary模式恢复需要,SCAN操作会填充SEG.DAT和EXT.DAT两个文件,并记录到DERBY数据库中。
使用Scan Tables From Segments模式
完成SCAN操作后,主界面左侧会出现数据库图标。此时可以选择两种模式:Scan Tables From Segments和Scan Tables From Extents。
Scan Tables From Segments模式适用于丢失了SYSTEM表空间,但所有的应用数据表空间均存在的情况。而Scan Tables From Extents模式不适用于Dictionary模式的Truncate表数据恢复,即丢失了SYSTEM表空间且丢失了SEGMENT HEADER所在的数据文件。
优先考虑使用Scan Tables From Segments模式,如果发现该模式下找不到所需的数据,再考虑使用Scan Tables From Extents模式。
解析字段类型
Scan Tables操作基于SEG.DAT中的SEGMENT HEADER信息来构建数据表信息。树形图上的每个节点表示一个数据表段,其名字为obj数据段上记录的DATA OBJECT ID。选择一个节点并观察主界面右侧边栏,可以看到智能字段类型解析的结果。
由于丢失了SYSTEM表空间,在No-Dictionary模式下缺乏数据表的结构信息,包括字段名和字段类型。PRM采用先进的JAVA类型预判技术来解析字段类型,可以解析多达10种主流数据类型。解析准确度超过90%,可以自动解决大部分场景。右侧边栏显示各字段的含义,包括字段号、取到的行数、最大长度、NULL的比例,以及将字段解析为字符串、数字、日期和时间戳的比例。
示例数据分析
根据智能字段类型解析的结果,可以解析10条数据并显示解析结果。这些示例数据可以帮助用户了解实际存放在数据段中的数据情况。如果数据段上的记录条数不足10条,则会显示所有记录。
如果还有字段类型无法确定,PRM会尝试使用各种字段类型来解析,并呈现给用户,以便用户自行判断。目前PRM还不支持的类型包括XDB.XDB$RAW_LIST_T、XMLTYPE和用户自定义类型等。
数据搭桥
PRM生成的UNLOAD语句仅作为系统内部使用和PRM开发团队以及ParnassusData支持工程师使用。在Non-Dictionary模式下,可以采用常规和数据搭桥模式。区别在于非字典模式下数据搭桥时,用户可以自行执行字段的类型。如果用户知道表设计时的结构,可以自行选择正确的Column Type类型,以便PRM将表数据顺利搭桥到目标数据库。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。