1 .一种数据离线恢复方法,包括:
获取数据文件中待修复的数据块;
读取日志文件中与所述数据块对应的page页的日志记录;
对所述page页中待修复的日志记录进行重组;
修复重组后的日志记录并写入所述数据文件。
2.根据权利要求1所述的数据离线恢复方法,其中,读取日志文件中与所述数据块对应
的page页的日志记录的步骤包括:
根据所述数据块的大小计算page页的偏移量;
基于所述偏移量从所述日志文件中查找所述page页;
读取所述page页的长度,并获取待修复的日志记录;
计算所述page页的页面边界;
读取所述页面边界内的所有页面。
3 .根据权利要求2所述的数据离线恢复方法,其中,计算所述page页的页面边界的步骤
包括:
查找第一条日志记录标记的指针;
根据所述数据块的大小计算所述数据文件中的偏移量;
基于所述第一条日志记录标记的指针和所述数据文件中的偏移量计算出所述page页
的页面边界。
4 .根据权利要求1所述的数据离线恢复方法,其中,对所述page页中待修复的日志记录
进行重组的步骤包括:
根据日志资源类型和日志类型对所述日志记录进行分类;
忽略所述日志记录的页头并重组为待写入的数据。
5 .根据权利要求4所述的数据离线恢复方法,其中,
所述日志资源类型包括第一堆类型、第二堆类型和XACT类型;
所述日志类型包括增、删、改、热修改、确认、锁、到位、清理、页冻结、可见、锁修改、批量
插入、提交和放弃。
6 .根据权利要求5所述的数据离线恢复方法,其中,当所述日志资源类型为第一堆类型
时,修复重组后的日志记录并写入所述数据文件的步骤包括:
若所述日志类型为增,则读取所述日志文件中的page页,更换所述日志记录的头部信
息,向所述数据文件中追加数据;
若所述日志类型为删,则读取所述日志文件中的page页,更新xmax和xmin字段;
若所述日志类型为改或者热修改,则原数据保留,更新xmax和xmin字段,向所述数据文
件追加新数据;
若所述日志类型为确认,则根据元组偏移量获取页面标识符,获取元组的头部信息,重
设所述数据块的id和偏移量,重设页面中的序列号;
若所述日志类型为锁,当元组被锁定时,清除热更新位,重设所述数据块的id和偏移
量,重设xmax和cmax标记位;
若所述日志类型为到位,则在其原位置采用新数据覆盖旧数据。
7 .根据权利要求5所述的数据离线恢复方法,其中,当所述日志资源类型为第二堆类型
权 利 要 求 书
1/2 页
2
评论